You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by "Einar M. RÃ¥berg Rosenvinge" <ei...@tihlde.org> on 2003/04/14 11:09:48 UTC
Using MBeans with Tomcat
Hi!
I have a webapp running on a Tomcat web server that I would like to
monitor. I have only just recently looked at JMX, and this seems to make
the job a bit simpler (hopefully).
At first I would like to monitor the logged in users. This is done in the
following way:
I have a session bean that implements HttpSessionBindingListener. This
means that when a new session is created, valueBound() is called on the
session bean, and valueUnbound() is called when the session is invalidated
or times out.
So far so good.
In valueBound() I wish to gain access to an MBeanServer object, and
through this gain access to a CurrentUsers object where I will register
the current session.
In valueUnbound() I wish to unregister the session from CurrentUsers.
As of now I have a class called Initiator, which implements
ServletContextListener. contextInitialized() is called on this when the
web application starts up.
Here I instantiate an MBeanServer and add this to the ServletContext
(application) object.
Is this a good place to create an MBeanServer? Is there a way I can gain
access to Tomcat's MBeanServer? Would that be a good idea?
As of now, SessionBean.valueBound() looks like this:
public void valueBound(javax.servlet.http.HttpSessionBindingEvent httpSessionBindingEvent) {
//called whenever this object is bound to a http session
MBeanServer server = (MBeanServer) httpSessionBindingEvent.getSession().getServletContext().getAttribute("MBeanServer");
try {
ObjectName objName = new ObjectName("com.test:type=CurrentUsers,name=currUsers"); Object[]
params = {this};
String[] signature = {"com.test.SessionBean"};
server.invoke(objName, "addSession", params, signature);
} catch (Exception e) {
System.err.println("valueBound():" + e);
}
}
}
I have some more questions, too:
I also (of course) want to get information _out_ of the MBeanServer. What
is the most convenient way of doing that?
E.g. using HtmlAdaptorServer or some SNMP stuff...
HtmlAdaptorServer could be started like this:
HtmlAdaptorServer adaptorServer = new HtmlAdaptorServer();
ObjectName adaptorObjName = new ObjectName("com.test:type=htmladaptor,port=8902");
adaptorServer.setPort(8902);
server.registerMBean(adaptorServer, adaptorObjName);
adaptorServer.start();
The start() method (of course) does not return. Should I create the
HtmlAdaptorServer from a separate thread started from Initiator?
Or should I create MBeanServer (and perhaps HtmlAdaptorServer) in some
other magical place?
Hope someone can clarify things a bit.
-Einar
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org