| |
JMX: Management Extensions |
Instrumenting resources so JMX can manage them consists
of the following steps:
- For a class MyFoo, create an interface MyFooMBean with
the management interface.
- Class MyFoo needs to implement the MyFooMBean interface.
- Register MyFoo with the JMX server.
Instrumenting a servlet
Resin will automatically register any servlet which
implement an MBean interface. By default, the JMX name will be:
web-app:j2eeType=Servlet,name=servlet-name
|
ObjectName attributes
Attribute | Value
|
j2eeType | Servlet
|
WebModule | the contextPath
|
J2EEApplication | the host?
|
J2EEServer | the server-id?
|
The domain is web-app, the type property
is javax.servlet.Servlet and the name property is the value
of <servlet-name>.
JMX clients will use the name to manage the servlet. For example,
a client might use the pattern web-app:type=javax.servlet.Servlet,*
to retrieve all managed servlets.
MyServletMBean.java
package test;
public interface MyServletMBean {
public int getCount();
}
|
MyServlet.java
package test;
import java.io.*;
import javax.servlet.*;
public class MyServlet extends GenericServlet implements MyServletMBean {
private int count;
public int getCount()
{
return count;
}
public void service(ServletRequest request,
ServletResponse response)
throws IOException
{
PrintWriter out = response.getWriter();
count++;
out.println("Hello, world");
}
}
|
Managing resources uses the JMX API, primarily using
the MBeanServer object. In Resin, each web-app has
its own MBeanServer.
Getting the Count attribute
import javax.management.*;
...
MBeanServer server = MBeanServerFactory.createMBeanServer();
ObjectName name = new ObjectName("web-app:j2eeType=javax.servlet.Servlet," +
"name=hello");
Object value = server.getAttribute(name, "Count");
out.println("Count: " + value);
|
/resin-status
The resin-status servlet has a
primitive generic JMX management view of JMX managed servlets.
By adding a MBean interface to your servlet, you'll automatically get
a view of your servlets from /resin-status.
Copyright © 1998-2002 Caucho Technology, Inc. All rights reserved.
Resin® is a registered trademark,
and HardCoretm and Quercustm are trademarks of Caucho Technology, Inc. | |
|