JMX 中的 MBean 嵌套对象名称

MBean nested object name in JMX

我注意到一些 MBean 有嵌套键;我如何进行查询以获取该密钥?

下图为示例:

通常,MBean 查询是这样的:"org.apache.cassandra.metrics:type=CQL,name=RegularStatementsExecuted"

如何将附加文件夹添加到该查询?我试过以下方法:

"org.apache.cassandra.metrics:type=Cache,CounterCache,name=Capacity"
"org.apache.cassandra.metrics:type=Cache.CounterCache,name=Capacity"
"org.apache.cassandra.metrics:type=Cache,type=CounterCache,name=Capacity"

有什么想法吗?

我查看了 Java Management Extensions (JMX) Best Practices,它没有提到任何关于嵌套键的内容。

当我查看 jconsole:

时,我注意到我可以将 scope 添加到 属性 列表中

所以,我用的是:

"org.apache.cassandra.metrics:type=Cache,scope=CounterCache,name=HitRate"

很高兴知道它没有在任何地方记录...

使用 JConsole 获取 tomcat 的所有会话 ID,可以在 :-

找到

Catalina > Manager > localhost > /##07 ( > Operations > listSessionIds )

获取/##07的MBean对象名只需在JConsole上点击即可显示名称。(如下图)

Java 获取所有会话 ID 的代码:

JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi");
JMXConnector jmxConn = JMXConnectorFactory.connect(url, null);
// Connecting to the MBeanServer
MBeanServerConnection mbsConn = jmxConn.getMBeanServerConnection();

Object sessionIds = mbsConn.invoke(new ObjectName("Catalina:type=Manager,host=localhost,context=/##07"), "listSessionIds", null, null);

System.out.println(sessionIds.toString());
//close jmx connection
jmxConn.close();