java.lang.management.ManagementFactory आपको जेएमएक्स डेटा तक पहुंच प्रदान करता है।
i.g.
List<MemoryPoolMXBean> memPoolBeans = ManagementFactory.getMemoryPoolMXBeans();
for (MemoryPoolMXBean mpb : memPoolBeans) {
System.out.println("Memory Pool: " + mpb.getName());
}
कुछ नमूने अतः क्वेरी पर उपलब्ध हैं: [जावा] managementfactory
एक अच्छा पढ़ा: https://www.ibm.com/developerworks/library/j-jtp09196/index.html
पूर्ण कार्यान्वयन के लिए एक दूरस्थ वीएम से कनेक्ट कर रहा:
Map<String,String[]> env = new HashMap<String, String[]>();
env.put(JMXConnector.CREDENTIALS, new String[]{"user","pass"});
JMXServiceURL address = new JMXServiceURL("service:rmi:///jndi/rmi://host:port/jmxrmi");
JMXConnector connector = JMXConnectorFactory.connect(address,env);
MBeanServerConnection mbs = connector.getMBeanServerConnection();
//get all mbeans
Set<ObjectInstance> beans = mbs.queryMBeans(null,null);
for(ObjectInstance instance : beans)
{
MBeanInfo info = mbs.getMBeanInfo(instance.getObjectName());
}
से जानकारी, आप वांछित के रूप में ऑब्जेक्ट नाम और विशेषताओं से पूछ सकते हैं।
यह काम करता है, लेकिन क्या सभी ऑब्जेक्टनामों से सभी मान प्राप्त करने का कोई आसान तरीका है? अभी, ऐसा लगता है कि मुझे na MBeanServerConnection प्राप्त करना है, फिर mbs.getAttributes (..) के साथ व्यक्तिगत रूप से प्रत्येक मान को क्वेरी करें। क्या कोई बेहतर तरीका है? –
ठीक है, मैं queryMBeans के साथ सभी ऑब्जेक्ट नाम प्राप्त कर सकता हूं, लेकिन मैं अभी भी सभी विशेषताओं को स्वचालित रूप से प्राप्त करने में असमर्थ हूं। –
: पी। अब, मैं सभी विशेषताओं से पूछताछ कर सकता हूं, लेकिन जिस तरह से आप इसे करते हैं वह असाधारण सर्किट होता है। मैं आपका जवाब संपादित करने जा रहा हूं और इसे थोड़ा और पूरा कर दूंगा, फिर इसे स्वीकार करूँगा। –