To make a JMX agent accessible from management applications outside the agent's JVM
MBean server relies on protocol adaptors and connectors. Basically adaptors
provide a view through a specific protocol for all MBeans registered in the
MBean server (e.g. an HTML adaptor could display an MBean in a Web
browser). Manager-side interface provided by the connectors that handles the
communication between manager and JMX agent. When a remote management
application uses such interface, it connect to a JMX agent transparently
through the network regardless of the protocol.
To remote applications by using Remote Method Invocation (RMI) JMX technology exports JMX API instrumentation.
It also defines an optional protocol based
directly on TCP sockets called the JMX Messaging Protocol (JMXMP). But this this protocol is not supported in J2SE 5.0.
The JMX Remote API 1.0 (JSR 160) specification describes how to advertise and
find JMX agents using existing discovery and lookup infrastructures. In other
way the specification does not define its own discovery and lookup service.
Using existing discovery and lookup services is optional; you may encode the
address of your JMX API agents in the form of URLs and make these URLs available
to the manager.
RMI Connector
Example 4 shows an example of using the RMI connector, which is a slight modification of Example 3.
public class SimpleAgent {
private MBeanServer mbs = null;
public SimpleAgent() {
// <em>Get the platform MBeanServer</em>
mbs = ManagementFactory.getPlatformMBeanServer();
// <em>Unique identification of MBeans</em>
Hello helloBean = new Hello();
ObjectName helloName = null;
try {
// <em>Uniquely identify the MBeans and register them with the MBeanServer</em>
helloName = new ObjectName("SimpleAgent:name=hellothere");
mbs.registerMBean(helloBean, helloName);
<strong>// <em>Create an RMI connector and start it</em>
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server");
JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(url,
null, mbs);
cs.start();</strong>
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String argv[]) {
SimpleAgent agent = new SimpleAgent();
System.out.println("SimpleAgent is running...");
}
}</pre>
To execute this application, do the following:
If you want to execute the application on J2SE 1.4, you need to change the line
mbs = ManagementFactory.getPlatformMBeanServer();.
to mbs = MBeanServerFactory.createMBeanServer("SimpleAgent");
Compile the revised SimpleAgent.java from Code Sample 4.
Start the rmiregistry on port 9999 (prompt> rmiregistry 9999).
Run SimpleAgent (prompt> java SimpleAgent).
While SimpleAgent is running, run jconsole and
then use the Advanced tab and enter the information as shown in the
following figure.
Figure 4: Configuring jconsole for remote management
6. Once you are connected, you can browse the MBeans and manage them using the MBeans tab as shown in Figure 5.