Caucho Technology
  • resin 4.0
  • using the jmx mbeanserver api


    Example showing JMX-managed resources using the MBeanServer API.

    Demo

      Files in this tutorial

      WEB-INF/web.xmlConfigures the JMX-managed bean
      WEB-INF/classes/example/Test.javaThe resource bean implementation.
      WEB-INF/classes/example/TestAdmin.javaThe management interface for the bean.
      index.jspUsing the managed bean.

      JMX Resource

      Any resource in Resin can be managed by JMX by implementing an MBean interface and by specifying an MBean name. The interface exposes the resource's methods to be managed.

      The Test resource

      The test resource is identical to the basic example but implements TestAdmin instead of TestMBean. Because the name TestAdmin does not conform to the MBean convention, the web.xml will need to specify the interface explicitly.

      Test.java
      package example;
      
      public class Test implements TestMBean {
        private String _data = "default";
      
        public void setData(String data)
        {
          _data = data;
        }
      
        public String getData()
        {
          return _data;
        }
      }
      

      web.xml configuration

      The web.xml (or resin.conf) configures the resource with the <resource> tag just as with other resources. The resources is registered as an MBean by specifying an mbean-name.

      web.xml
      <web-app xmlns="http://caucho.com/ns/resin">
        <resource mbean-name="example:name=basic"
                  type="example.Test"
                  mbean-interface="example.TestAdmin>
          <init>
            <data>An Example Resource</data>
          </init>
        </resource>
      </web-app>
      
      TAGDESCRIPTION
      resourcedefines the resource
      mbean-namethe MBean name of the resource
      typethe class name of the resource bean
      mbean-interfacethe class name to use as the managed interface
      initAny bean-style configuration goes here
      dataThe example bean's setData parameter.

      Using MBeanServer

      MBeanServer is the main JMX interface for managing resources. Although it is less convenient than Resin's proxy interface, it has the advantage of being part of the JMX standard.

      Resin stores the MBeanServer it uses for resources in WebBeans. Since MBeanServer is unique, the application can use @In to inject the server.

      All management of an MBean uses the MBeanServer and the MBean's ObjectName. In this case, the ObjectName is "example:name=test".

      The MBeanServer has three primary management calls: getAttribute, setAttribute, and invoke. This example just uses getAttribute.

      index.jsp
      <%@ page import='javax.webbeans.In, javax.management.*, example.TestAdmin' %>
      <%!
      @In MBeanServer _server;
      %><%
      
      ObjectName name = new ObjectName("example:name=test");
      
      out.println("data: " + _server.getAttribute(name, "Data"));
      %>
      
      data: An example resource
      

      Compatibility

      Using the MBeanServer interface is compatible with other JMX implementations. The two Resin-dependencies are the configuration and how to obtain the Resin MBeanServer. Different JMX implementations will use a different technique to get the MBeanServer, so it's a good idea to encapsulate getting the MBeanServer in a class that you can change for different implementations.

      Demo


      Copyright © 1998-2011 Caucho Technology, Inc. All rights reserved.
      Resin ® is a registered trademark, and Quercustm, Ambertm, and Hessiantm are trademarks of Caucho Technology.