1 package jcaps_jmx;
 2 
 3 import java.io.PrintStream;
 4 import java.util.Hashtable;
 5 import java.util.Iterator;
 6 import java.util.Set;
 7 import javax.management.MBeanAttributeInfo;
 8 import javax.management.MBeanInfo;
 9 import javax.management.MBeanServerConnection;
10 import javax.management.remote.JMXConnector;
11 import javax.management.remote.JMXConnectorFactory;
12 import javax.management.remote.JMXServiceURL;
13 
14 
15 public class Main {
16    
17     public static void main(String[] args) throws Exception {
18         PrintStream out = System.out;
19         JMXConnector c;
20         MBeanServerConnection cnx;
21         String host = "localhost";
22         int port = 9877;
23         String rmiURL = "service:jmx:rmi:///jndi/rmi://" + host + ":" + port + "/jmxrmi";
24         JMXServiceURL u = new JMXServiceURL(rmiURL);
25         c = JMXConnectorFactory.connect(u);
26         cnx = c.getMBeanServerConnection();
27         Set instances = cnx.queryMBeans(null, null);       
28         for (Iterator i = instances.iterator(); i.hasNext();) {
29             javax.management.ObjectInstance o = (javax.management.ObjectInstance) i.next();
30             out.println(o.getObjectName().getDomain() + ":" + o.getClassName());
31             out.println("  KEY PROPERTY LIST:");
32             Hashtable l = o.getObjectName().getKeyPropertyList();
33             for (Iterator j = l.keySet().iterator(); j.hasNext();) {
34                 String key = (String) j.next();
35                 Object v = l.get(key);
36                 out.println("    " + key + "=" + v + " (" + v.getClass() + ")");
37             }
38             MBeanInfo info = cnx.getMBeanInfo(o.getObjectName());
39             MBeanAttributeInfo[] ainfo = info.getAttributes();
40             out.println("  ATTRIBUTES:");
41             for (int k = 0; k < ainfo.length; k++) {
42                 out.print("    " + ainfo[k].getName() + " (" + ainfo[k].getType() + ")");
43                 try {
44                     if (ainfo[k].getType().equals("java.lang.String")) {
45                         out.print("=" + cnx.getAttribute(o.getObjectName(), ainfo[k].getName()));
46                     }
47                     if (ainfo[k].getType().equals("java.lang.Boolean")) {
48                         out.print("=" + cnx.getAttribute(o.getObjectName(), ainfo[k].getName()));
49                     }
50                     if (ainfo[k].getType().equals("java.lang.Integer")) {
51                         out.print("=" + cnx.getAttribute(o.getObjectName(), ainfo[k].getName()));
52                     }
53                     if (ainfo[k].getType().equals("javax.management.ObjectName")) {
54                         out.print("=" + cnx.getAttribute(o.getObjectName(), ainfo[k].getName()));
55                     }
56                 } catch (Exception e) {
57                     //
58                 }
59                 out.println();
60             }
61         }
62     }
63 }
64 
65