If you need to programmatically access all JMX monitoring points for your Servlet app, do the following:
1. Add the following VM arguments to the Tomcat Run Configuration (This can be done in Eclipse/STS run configurations):
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=8234
-Dcom.sun.management.jmxremote.ssl=false
2. Then run the following Java Program:
package com.rim.platform.mdm.core.service.email;
import java.io.IOException;
import java.util.Set;
import javax.management.InstanceNotFoundException;
import javax.management.IntrospectionException;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanInfo;
import javax.management.MBeanServerConnection;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectInstance;
import javax.management.ReflectionException;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
public class MonitoringPoints
{
public MonitoringPoints()
{
}
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception
{
String host = "localhost";
int port = 8234;
String url = "service:jmx:rmi:///jndi/rmi://" + host + ":" + port + "/jmxrmi";
printAll(url);
}
public static void printAll(String url) throws IOException, MalformedObjectNameException,
InstanceNotFoundException, IntrospectionException, ReflectionException
{
JMXServiceURL serviceUrl = new JMXServiceURL(url);
JMXConnector jmxConnector = JMXConnectorFactory.connect(serviceUrl, null);
try
{
MBeanServerConnection mbeanConn = jmxConnector.getMBeanServerConnection();
// now query to get the beans or whatever
Set beanSet = mbeanConn.queryMBeans(null, null);
for (ObjectInstance instance : beanSet)
{
MBeanInfo info = mbeanConn.getMBeanInfo(instance.getObjectName());
MBeanAttributeInfo[] mai = info.getAttributes();
System.out.println("\n******* Monitoring points for: " + instance.getObjectName());
for (MBeanAttributeInfo object : mai)
{
System.out.println(object.getName());
}
}
}
finally
{
jmxConnector.close();
}
}
}