如何使用 JMX API 获取 ObjectName 的子项
How to get children of ObjectName using JMX API
我需要获取应用程序服务器中可用资源的所有子对象(可用数据源列表)。
为此,我正在使用这段代码:
ObjectName name = new ObjectName("jboss.as:subsystem=datasources");
Set<ObjectInstance> instances = server.queryMBeans(name, null);
Iterator<ObjectInstance> iterator = instances.iterator();
while (iterator.hasNext()) {
ObjectInstance instance = iterator.next();
System.out.println("MBean Found:");
System.out.println("Class Name:" + instance.getClassName());
System.out.println("Object Name:" + instance.getObjectName());
}
但是,我只能检索“jboss.as:subsystem=datasources”的对象名称,但我需要找到该树下的可用数据源。我在 ObjectInstance 中找不到任何方法来深入研究它。
有帮助吗?
您可以查询 MBean 树并按名称过滤对象:
Set<ObjectInstance> instances = connection.queryMBeans(null, null);
Iterator<ObjectInstance> iterator = instances.iterator();
while (iterator.hasNext()) {
ObjectInstance instance = iterator.next();
if (instance.getObjectName().toString().startsWith("jboss.as:subsystem=datasources,data-source=") &&
(!instance.getObjectName().toString().contains(",statistics")))
System.out.println("Object Name:" + instance.getObjectName());
}
如果使用 remote+http 协议,请确保将 jboss-client JAR 包含在您的类路径中。
更多详情:How do I know the list of Datasources in JBoss
我需要获取应用程序服务器中可用资源的所有子对象(可用数据源列表)。 为此,我正在使用这段代码:
ObjectName name = new ObjectName("jboss.as:subsystem=datasources");
Set<ObjectInstance> instances = server.queryMBeans(name, null);
Iterator<ObjectInstance> iterator = instances.iterator();
while (iterator.hasNext()) {
ObjectInstance instance = iterator.next();
System.out.println("MBean Found:");
System.out.println("Class Name:" + instance.getClassName());
System.out.println("Object Name:" + instance.getObjectName());
}
但是,我只能检索“jboss.as:subsystem=datasources”的对象名称,但我需要找到该树下的可用数据源。我在 ObjectInstance 中找不到任何方法来深入研究它。 有帮助吗?
您可以查询 MBean 树并按名称过滤对象:
Set<ObjectInstance> instances = connection.queryMBeans(null, null);
Iterator<ObjectInstance> iterator = instances.iterator();
while (iterator.hasNext()) {
ObjectInstance instance = iterator.next();
if (instance.getObjectName().toString().startsWith("jboss.as:subsystem=datasources,data-source=") &&
(!instance.getObjectName().toString().contains(",statistics")))
System.out.println("Object Name:" + instance.getObjectName());
}
如果使用 remote+http 协议,请确保将 jboss-client JAR 包含在您的类路径中。 更多详情:How do I know the list of Datasources in JBoss