获取mbean属性值?

时间:2012-05-03 05:38:23

标签: jboss attributes jmx mbeans

我被困在这里:

我需要获取

的值

org.jboss.system.server.ServerInfo

这里的代码我正在阅读mbean-attributes, 但我只能找到.hashvalues的价值观!

final MBeanAttributeInfo[] attributes = server.getMBeanInfo(mbean).getAttributes();
for (final MBeanAttributeInfo attribute : attributes) {
                    String name = attribute.getName();                            
}

经过两天的搜索 我请求帮助!

非常感谢,罗曼。

3 个答案:

答案 0 :(得分:2)

这解决了我的问题,获取服务器信息:

MBeanServer server = getMBeanServer("jboss");
    ObjectName mbeanname = getMBeanName(server, "server.location", "service",
            "ServerName");
    MBeanInfo mbeanInfo = server.getMBeanInfo(mbeanname);
    List<Map<String, String>> list = new ArrayList<Map<String, String>>();
    for (int i = 0; i < mbeanInfo.getAttributes().length; i++) {
        Map<String, String> attributeMap = new HashMap<String, String>();
        String attributeName = mbeanInfo.getAttributes()[i].getName();
        attributeMap.put("name", attributeName);
        String attributeValue = server.getAttribute(mbeanname, attributeName).toString();
        attributeMap.put(attributeName, attributeValue);
        attributeMap.put("value", attributeValue);
        list.add(attributeMap);
    }

答案 1 :(得分:0)

不确定 .hashcodes 的含义。您能否提供一些输出作为示例并向我们展示所有相关代码?

答案 2 :(得分:0)

public static Map<String, Object> getAllAttributes(String host, int port, String mbeanName) throws MalformedObjectNameException, IOException, InstanceNotFoundException, IntrospectionException, ReflectionException, AttributeNotFoundException, MBeanException {
    // Get JMX connector and get MBean server connection
    JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + host + ":" + port + "/jmxrmi");
    JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
    MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();       

    // Query all attributes and values
    ObjectName name = new ObjectName(mbeanName);
    MBeanInfo info = mbsc.getMBeanInfo(name);
    MBeanAttributeInfo[] attrInfo = info.getAttributes();
    Map<String, Object> map = new HashMap<>();
    for (MBeanAttributeInfo attr : attrInfo) {
        if (attr.isReadable()) {
            //System.out.println("\t" + attr.getName() + " = " + mbsc.getAttribute(name, attr.getName()));
            map.put(attr.getName(), mbsc.getAttribute(name, attr.getName()));
            }
        }
    jmxc.close();
    return map;

}