JMX: Management Extensions
Resin 2.1

Reference Guide
EJB Reference Guide

Getting Started
Configuration
IDE
Topics
JSP
XML/XSLT

Virtual Hosts
Balancing
Distributed Sessions
Caching
JavaScript
Filters
Servlets
Admin
WebDAV
Velocity
EJB Clients
JMX
Burlap
Hessian
EJB Clients
Topics
Burlap

Instrumenting Resources

Instrumenting resources so JMX can manage them consists of the following steps:

  1. For a class MyFoo, create an interface MyFooMBean with the management interface.
  2. Class MyFoo needs to implement the MyFooMBean interface.
  3. 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
AttributeValue
j2eeTypeServlet
WebModulethe contextPath
J2EEApplicationthe host?
J2EEServerthe 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

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.


EJB Clients
Topics
Burlap
Copyright © 1998-2006 Caucho Technology, Inc. All rights reserved.
Resin® is a registered trademark, and HardCoretm and Quercustm are trademarks of Caucho Technology, Inc.