【问题标题】:get mbean-attribute values?获取 mbean 属性值?
【发布时间】:2023-03-30 14:16:01
【问题描述】:

我被困在这里:

我需要获取的值

org.jboss.system.server.ServerInfo

使用此处的代码,我正在阅读 mbean 属性, 但我只能找到 .hashvalues 的值!

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

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

非常感谢,罗曼。

【问题讨论】:

    标签: jboss attributes jmx mbeans


    【解决方案1】:
    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;
    
    }
    

    【讨论】:

      【解决方案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);
          }
      

      【讨论】:

        【解决方案3】:

        不确定 .hashcodes 是什么意思。您能否提供一些输出作为示例并向我们展示所有相关代码?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-21
          • 2017-02-14
          • 2016-09-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多