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):
2. Then run the following Java Program:
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 SetbeanSet = 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(); } } }