You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Olivier Vergès <ol...@gmail.com> on 2008/09/01 21:57:55 UTC

Re: adding a virtual host with jmx

hi,
 so i'm using tomcat 6.0.15.

I'm trying  now to add a josso valve:  <Valve
className="org.josso.tc60.agent.SSOAgentValve" debug="1"/> always by jmx.

I don't  get your lines, in fact...

Could you please help me a little more?

O.V




2008/7/31 Bill Barker <wb...@wilshire.com>

> It's a lot of lines of code, but not that hard.  You haven't mentioned your
> Tomcat version, so I'll give a sort of generic setup.
>    ObjectName loader = getServerLoader(); // depends on the settings and
> version
>    ObjectName registry = getRegistry(); // depends on the settings and
> version
>    MBeanServer server = getTCMBeansServer(); // generally the first one,
> unless you (or your J2EE) are playing games
>
>    String hname = "Catalina:type=Host,host="+hostName; // Assuming the
> default Engine name of "Catalina"
>    ObjectName ohost = new ObjectName(hname);
>    Object host = server.instantiate(HOST_CLASS, loader);
>    server.invoke(registry, "registerComponent",
>        new Object[] {host, hname, null},
>        new String[]
> {"java.lang.Object","java.lang.String","java.lang.String"});
>    server.setAttribute(ohost, new Attribute("appBase", appBase));
>    //  Set more attributes, and aliases etc here
>    // Things like Realms and Contexts work much the same way if you follow
> Tomcat's naming conventions
>    server.invoke(ohost, "start", null, null);
>    // Start your contexts here, if you don't have automatic deployment set.
>
> As long as you follow Tomcat's naming conventions for ObjectNames, invoking
> "start" will automagically add the new elements to where they should live.
> You can get the values for the "loader" and "registry" by hooking up a JMX
> console to your existing Tomcat.
>
> "Olivier Vergès" <ol...@gmail.com> wrote in message
> news:575c33250807300655k26c65bbbx2ce0ec42e8c0839d@mail.gmail.com...
> > hi all,
> >
> > I'm creating a web application for auto deploying virtual host through
> > apache and tomcat on a production server.
> > Everything is ok except for the Tomcat part:
> > As tomcat can't be reloaded  and as i can't restart anytime I want,  I
> 've
> > heard jmx was great cause it was possible to modify a running tomcat (is
> > the
> > english expression is "on the fly"?).
> >
> > So, Connection to Mbean server is ok...
> >
> > My problem is :
> > when i invoke the addChild (org.apache.catalina.core.Container) method of
> > Engine I get this error:
> >             "java.io.NotSerializableException:
> > org.apache.catalina.util.LifecycleSupport
> >              at
> > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
> >              at
> >
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)..."
> >
> >
> > So i try to create my own addChildByString(String;String,String,String)
> > which takes the appabase and the name of th virtual host, and path and
> > docBase of the first needed context. But i've got a problem with the
> > context
> > now,
> > " GRAVE: Error getConfigured" (and nothing else)
> >
> > i'm a little lost with all the classes and functions and I haven't found
> > any
> > docs about adding vh by jmx.
> >
> > has anyone tried to add and directly make worked a virtual host and a
> > context on a running tomcat ?
> >
> > thx,
> > Olivier
> >
>
>
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
>

Re: adding a virtual host with jmx

Posted by Olivier Vergès <ol...@gmail.com>.
it works in part, i have done  this to add a ssoagentvalve:
*
String vname = "Catalina:type=Valve,name=SSOAgentValve,host=" + nameVH;
            ObjectName ovalve = new ObjectName(vname);

            Object valve =
server.instantiate("org.josso.tc60.agent.SSOAgentValve");


org.apache.tomcat.util.modeler.Registry.getRegistry().registerComponent(valve,
vname, null);

      *
but the *controller* and *containerName* stay empty. So I've tried to use
that :
* server.setAttribute(ovalve, new
Attribute("containerName","Catalina:type=Host,host=" + nameVH ));

  *And it doesn't work for both of them cause theses are not writable.
I'm going to try to use the host's function addchild  but that was my first
problem: this function doesnt' seem to work and i'm not sure that it will
fill the two missing parameters on the valve...

So, anyone got an idea?

O.V

Re: adding a virtual host with jmx

Posted by Olivier Vergès <ol...@gmail.com>.
I've found these

*  ObjectName loader = new
ObjectName("Catalina:type=ServerClassLoader,name=common");
**
   MBeanServer server =
java.lang.management.ManagementFactory.getPlatformMBeanServer();
          *
but registry is not in my JMX.

O.V

2008/9/2 Olivier Vergès <ol...@gmail.com>

>
> yeah i've followed it, but i'm just lost with the first lines:
>
> * ObjectName loader = getServerLoader(); // depends on the settings and*
> * version
>    ObjectName registry = getRegistry(); // depends on the settings and
> version
>    MBeanServer server = getTCMBeansServer(); // generally the first one,
> unless you (or your J2EE) are playing games
> *
>
> For now; I get a MBeanServerConnection and I can invoke the differents
> methods like this:
>
>   JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" +
> hostIPAddress + "/jmxrmi");
>   JMXConnector   conn = JMXConnectorFactory.connect(url);
>    MBeanServerConnection    mbsc = conn.getMBeanServerConnection();
>
>
>             ObjectName objectName = new
> ObjectName("Catalina:type=MBeanFactory");
>             Object[] params =
> {"Catalina:type=Host,host="+nameVH,"/manager","/data/tomcat/server/manager"};
>             String[] signature = {String.class.getName(),
> String.class.getName(), String.class.getName()};
>
>              mbsc.invoke(objectName, "createStandardContext", params,
> signature);
>
> That's how i create a context for a given host. But like the there is no
> addSSOAgentValve, that's why i'm trying to use bill's code .
>
> O.V
>
>
>
> 2008/9/1 Martin Gainty <mg...@hotmail.com>
>
>
>> did you follow bill's code sample ?...did you have different result?also
>> please display the exact structure and calls you are making to instantiate
>> your javax.management.MBeanServerand which class is executing the addChild
>>
>> javadocs located at
>>
>> http://java.sun.com/j2ee/1.4/docs/api/javax/management/package-summary.htmlthanks/Martin______________________________________________ Disclaimer and
>> confidentiality note Everything in this e-mail and any attachments relates
>> to the official business of Sender. This transmission is of a confidential
>> nature and Sender does not endorse distribution to any party other than
>> intended recipient. Sender does not necessarily endorse content contained
>> within this transmission. > Date: Mon, 1 Sep 2008 21:57:55 +0200> From:
>> olivier.verges@gmail.com> To: users@tomcat.apache.org> Subject: Re:
>> adding a virtual host with jmx> > hi,> so i'm using tomcat 6.0.15.> > I'm
>> trying now to add a josso valve: <Valve>
>> className="org.josso.tc60.agent.SSOAgentValve" debug="1"/> always by jmx.> >
>> I don't get your lines, in fact...> > Could you please help me a little
>> more?> > O.V> > > > > 2008/7/31 Bill Barker <wb...@wilshire.com>> > >
>> It's a lot of lines of code, but not that hard. You haven't mentioned your>
>> > Tomcat version, so I'll give a sort of generic setup.> > ObjectName loader
>> = getServerLoader(); // depends on the settings and> > version> > ObjectName
>> registry = getRegistry(); // depends on the settings and> > version> >
>> MBeanServer server = getTCMBeansServer(); // generally the first one,> >
>> unless you (or your J2EE) are playing games> >> > String hname =
>> "Catalina:type=Host,host="+hostName; // Assuming the> > default Engine name
>> of "Catalina"> > ObjectName ohost = new ObjectName(hname);> > Object host =
>> server.instantiate(HOST_CLASS, loader);> > server.invoke(registry,
>> "registerComponent",> > new Object[] {host, hname, null},> > new String[]> >
>> {"java.lang.Object","java.lang.String","java.lang.String"});> >
>> server.setAttribute(ohost, new Attribute("appBase", appBase));> > // Set
>> more attributes, and aliases etc here> > // Things like Realms and Contexts
>> work much the same way if you follow> > Tomcat's naming conventions> >
>> server.invoke(ohost, "start", null, null);> > // Start your contexts here,
>> if you don't have automatic deployment set.> >> > As long as you follow
>> Tomcat's naming conventions for ObjectNames, invoking> > "start" will
>> automagically add the new elements to where they should live.> > You can get
>> the values for the "loader" and "registry" by hooking up a JMX> > console to
>> your existing Tomcat.> >> > "Olivier Vergès" <ol...@gmail.com>
>> wrote in message> >
>> news:575c33250807300655k26c65bbbx2ce0ec42e8c0839d@mail.gmail.com...> > >
>> hi all,> > >> > > I'm creating a web application for auto deploying virtual
>> host through> > > apache and tomcat on a production server.> > > Everything
>> is ok except for the Tomcat part:> > > As tomcat can't be reloaded and as i
>> can't restart anytime I want, I> > 've> > > heard jmx was great cause it was
>> possible to modify a running tomcat (is> > > the> > > english expression is
>> "on the fly"?).> > >> > > So, Connection to Mbean server is ok...> > >> > >
>> My problem is :> > > when i invoke the addChild
>> (org.apache.catalina.core.Container) method of> > > Engine I get this
>> error:> > > "java.io.NotSerializableException:> > >
>> org.apache.catalina.util.LifecycleSupport> > > at> > >
>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)> > >
>> at> > >> >
>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)...">
>> > >> > >> > > So i try to create my own
>> addChildByString(String;String,String,String)> > > which takes the appabase
>> and the name of th virtual host, and path and> > > docBase of the first
>> needed context. But i've got a problem with the> > > context> > > now,> > >
>> " GRAVE: Error getConfigured" (and nothing else)> > >> > > i'm a little lost
>> with all the classes and functions and I haven't found> > > any> > > docs
>> about adding vh by jmx.> > >> > > has anyone tried to add and directly make
>> worked a virtual host and a> > > context on a running tomcat ?> > >> > >
>> thx,> > > Olivier> > >> >> >> >> >> >
>> ---------------------------------------------------------------------> > To
>> start a new topic, e-mail: users@tomcat.apache.org> > To unsubscribe,
>> e-mail: users-unsubscribe@tomcat.apache.org> > For additional commands,
>> e-mail: users-help@tomcat.apache.org> >> >
>> _________________________________________________________________
>> Talk to your Yahoo! Friends via Windows Live Messenger.  Find out how.
>>
>> http://www.windowslive.com/explore/messenger?ocid=TXT_TAGLM_WL_messenger_yahoo_082008
>
>
>

Re: adding a virtual host with jmx

Posted by Olivier Vergès <ol...@gmail.com>.
yeah i've followed it, but i'm just lost with the first lines:

* ObjectName loader = getServerLoader(); // depends on the settings and*
* version
   ObjectName registry = getRegistry(); // depends on the settings and
version
   MBeanServer server = getTCMBeansServer(); // generally the first one,
unless you (or your J2EE) are playing games
*

For now; I get a MBeanServerConnection and I can invoke the differents
methods like this:

  JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" +
hostIPAddress + "/jmxrmi");
  JMXConnector   conn = JMXConnectorFactory.connect(url);
   MBeanServerConnection    mbsc = conn.getMBeanServerConnection();


            ObjectName objectName = new
ObjectName("Catalina:type=MBeanFactory");
            Object[] params =
{"Catalina:type=Host,host="+nameVH,"/manager","/data/tomcat/server/manager"};
            String[] signature = {String.class.getName(),
String.class.getName(), String.class.getName()};

             mbsc.invoke(objectName, "createStandardContext", params,
signature);

That's how i create a context for a given host. But like the there is no
addSSOAgentValve, that's why i'm trying to use bill's code .

O.V



2008/9/1 Martin Gainty <mg...@hotmail.com>

>
> did you follow bill's code sample ?...did you have different result?also
> please display the exact structure and calls you are making to instantiate
> your javax.management.MBeanServerand which class is executing the addChild
>
> javadocs located at
>
> http://java.sun.com/j2ee/1.4/docs/api/javax/management/package-summary.htmlthanks/Martin______________________________________________ Disclaimer and
> confidentiality note Everything in this e-mail and any attachments relates
> to the official business of Sender. This transmission is of a confidential
> nature and Sender does not endorse distribution to any party other than
> intended recipient. Sender does not necessarily endorse content contained
> within this transmission. > Date: Mon, 1 Sep 2008 21:57:55 +0200> From:
> olivier.verges@gmail.com> To: users@tomcat.apache.org> Subject: Re: adding
> a virtual host with jmx> > hi,> so i'm using tomcat 6.0.15.> > I'm trying
> now to add a josso valve: <Valve>
> className="org.josso.tc60.agent.SSOAgentValve" debug="1"/> always by jmx.> >
> I don't get your lines, in fact...> > Could you please help me a little
> more?> > O.V> > > > > 2008/7/31 Bill Barker <wb...@wilshire.com>> > >
> It's a lot of lines of code, but not that hard. You haven't mentioned your>
> > Tomcat version, so I'll give a sort of generic setup.> > ObjectName loader
> = getServerLoader(); // depends on the settings and> > version> > ObjectName
> registry = getRegistry(); // depends on the settings and> > version> >
> MBeanServer server = getTCMBeansServer(); // generally the first one,> >
> unless you (or your J2EE) are playing games> >> > String hname =
> "Catalina:type=Host,host="+hostName; // Assuming the> > default Engine name
> of "Catalina"> > ObjectName ohost = new ObjectName(hname);> > Object host =
> server.instantiate(HOST_CLASS, loader);> > server.invoke(registry,
> "registerComponent",> > new Object[] {host, hname, null},> > new String[]> >
> {"java.lang.Object","java.lang.String","java.lang.String"});> >
> server.setAttribute(ohost, new Attribute("appBase", appBase));> > // Set
> more attributes, and aliases etc here> > // Things like Realms and Contexts
> work much the same way if you follow> > Tomcat's naming conventions> >
> server.invoke(ohost, "start", null, null);> > // Start your contexts here,
> if you don't have automatic deployment set.> >> > As long as you follow
> Tomcat's naming conventions for ObjectNames, invoking> > "start" will
> automagically add the new elements to where they should live.> > You can get
> the values for the "loader" and "registry" by hooking up a JMX> > console to
> your existing Tomcat.> >> > "Olivier Vergès" <ol...@gmail.com>
> wrote in message> >
> news:575c33250807300655k26c65bbbx2ce0ec42e8c0839d@mail.gmail.com...> > >
> hi all,> > >> > > I'm creating a web application for auto deploying virtual
> host through> > > apache and tomcat on a production server.> > > Everything
> is ok except for the Tomcat part:> > > As tomcat can't be reloaded and as i
> can't restart anytime I want, I> > 've> > > heard jmx was great cause it was
> possible to modify a running tomcat (is> > > the> > > english expression is
> "on the fly"?).> > >> > > So, Connection to Mbean server is ok...> > >> > >
> My problem is :> > > when i invoke the addChild
> (org.apache.catalina.core.Container) method of> > > Engine I get this
> error:> > > "java.io.NotSerializableException:> > >
> org.apache.catalina.util.LifecycleSupport> > > at> > >
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)> > >
> at> > >> >
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)...">
> > >> > >> > > So i try to create my own
> addChildByString(String;String,String,String)> > > which takes the appabase
> and the name of th virtual host, and path and> > > docBase of the first
> needed context. But i've got a problem with the> > > context> > > now,> > >
> " GRAVE: Error getConfigured" (and nothing else)> > >> > > i'm a little lost
> with all the classes and functions and I haven't found> > > any> > > docs
> about adding vh by jmx.> > >> > > has anyone tried to add and directly make
> worked a virtual host and a> > > context on a running tomcat ?> > >> > >
> thx,> > > Olivier> > >> >> >> >> >> >
> ---------------------------------------------------------------------> > To
> start a new topic, e-mail: users@tomcat.apache.org> > To unsubscribe,
> e-mail: users-unsubscribe@tomcat.apache.org> > For additional commands,
> e-mail: users-help@tomcat.apache.org> >> >
> _________________________________________________________________
> Talk to your Yahoo! Friends via Windows Live Messenger.  Find out how.
>
> http://www.windowslive.com/explore/messenger?ocid=TXT_TAGLM_WL_messenger_yahoo_082008

RE: adding a virtual host with jmx

Posted by Martin Gainty <mg...@hotmail.com>.
did you follow bill's code sample ?...did you have different result?also please display the exact structure and calls you are making to instantiate your javax.management.MBeanServerand which class is executing the addChild
 
javadocs located at
http://java.sun.com/j2ee/1.4/docs/api/javax/management/package-summary.htmlthanks/Martin ______________________________________________ Disclaimer and confidentiality note Everything in this e-mail and any attachments relates to the official business of Sender. This transmission is of a confidential nature and Sender does not endorse distribution to any party other than intended recipient. Sender does not necessarily endorse content contained within this transmission. > Date: Mon, 1 Sep 2008 21:57:55 +0200> From: olivier.verges@gmail.com> To: users@tomcat.apache.org> Subject: Re: adding a virtual host with jmx> > hi,> so i'm using tomcat 6.0.15.> > I'm trying now to add a josso valve: <Valve> className="org.josso.tc60.agent.SSOAgentValve" debug="1"/> always by jmx.> > I don't get your lines, in fact...> > Could you please help me a little more?> > O.V> > > > > 2008/7/31 Bill Barker <wb...@wilshire.com>> > > It's a lot of lines of code, but not that hard. You haven't mentioned your> > Tomcat version, so I'll give a sort of generic setup.> > ObjectName loader = getServerLoader(); // depends on the settings and> > version> > ObjectName registry = getRegistry(); // depends on the settings and> > version> > MBeanServer server = getTCMBeansServer(); // generally the first one,> > unless you (or your J2EE) are playing games> >> > String hname = "Catalina:type=Host,host="+hostName; // Assuming the> > default Engine name of "Catalina"> > ObjectName ohost = new ObjectName(hname);> > Object host = server.instantiate(HOST_CLASS, loader);> > server.invoke(registry, "registerComponent",> > new Object[] {host, hname, null},> > new String[]> > {"java.lang.Object","java.lang.String","java.lang.String"});> > server.setAttribute(ohost, new Attribute("appBase", appBase));> > // Set more attributes, and aliases etc here> > // Things like Realms and Contexts work much the same way if you follow> > Tomcat's naming conventions> > server.invoke(ohost, "start", null, null);> > // Start your contexts here, if you don't have automatic deployment set.> >> > As long as you follow Tomcat's naming conventions for ObjectNames, invoking> > "start" will automagically add the new elements to where they should live.> > You can get the values for the "loader" and "registry" by hooking up a JMX> > console to your existing Tomcat.> >> > "Olivier Vergès" <ol...@gmail.com> wrote in message> > news:575c33250807300655k26c65bbbx2ce0ec42e8c0839d@mail.gmail.com...> > > hi all,> > >> > > I'm creating a web application for auto deploying virtual host through> > > apache and tomcat on a production server.> > > Everything is ok except for the Tomcat part:> > > As tomcat can't be reloaded and as i can't restart anytime I want, I> > 've> > > heard jmx was great cause it was possible to modify a running tomcat (is> > > the> > > english expression is "on the fly"?).> > >> > > So, Connection to Mbean server is ok...> > >> > > My problem is :> > > when i invoke the addChild (org.apache.catalina.core.Container) method of> > > Engine I get this error:> > > "java.io.NotSerializableException:> > > org.apache.catalina.util.LifecycleSupport> > > at> > > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)> > > at> > >> > java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)..."> > >> > >> > > So i try to create my own addChildByString(String;String,String,String)> > > which takes the appabase and the name of th virtual host, and path and> > > docBase of the first needed context. But i've got a problem with the> > > context> > > now,> > > " GRAVE: Error getConfigured" (and nothing else)> > >> > > i'm a little lost with all the classes and functions and I haven't found> > > any> > > docs about adding vh by jmx.> > >> > > has anyone tried to add and directly make worked a virtual host and a> > > context on a running tomcat ?> > >> > > thx,> > > Olivier> > >> >> >> >> >> > ---------------------------------------------------------------------> > To start a new topic, e-mail: users@tomcat.apache.org> > To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org> > For additional commands, e-mail: users-help@tomcat.apache.org> >> >
_________________________________________________________________
Talk to your Yahoo! Friends via Windows Live Messenger.  Find out how.
http://www.windowslive.com/explore/messenger?ocid=TXT_TAGLM_WL_messenger_yahoo_082008