如何使用PlatformMbeanServer获取Websphere中的群集节点?

问题描述:

我已经在WebSphere中部署了一个war应用程序,作为Server1和Server2的一部分。 有一个集群有这两个服务器。 我想写作java代码作为我的战争应用程序的一部分,并获取群集节点的详细信息。如何使用PlatformMbeanServer获取Websphere中的群集节点?

MBeanServer mbServer = ManagementFactory.getPlatformMBeanServer(); 
    Set mBeanSet = mbServer.queryMBeans(null, null); 

上面的代码没有列出集群mbean,实际上并不是所有的mbean都在这里列出。

从Jconsole也可以看出,Cluster Mbean没有在这里列出。

我错过了什么?

WebSphere MBean与JVM Mbeans不在同一个MBean服务器中。这是列出所有WebSphere MBean的代码。由于群集Mbean位于Deployment Manager上,因此我们必须查看它。

 ObjectName on = new ObjectName("WebSphere:*");   
     Set mbeans = AdminServiceFactory.getAdminService() 
       .getDeploymentManagerAdminClient().queryMBeans(on, null); 

     for (Object o: mbeans){    
      System.out.println("mbean: "+ o); 
     } 
+0

谢谢布鲁斯!我将不得不使用反射调用此代码,因为此代码可以在不同的容器(TomCat,WebLogic,WebSphere)中执行。所以我将不得不在条件下加载它。 – AKS

+0

当您打开安全性时,它会更有趣;-) –

+0

是的,您是对的。在安全开启的情况下,它提供了“由com.ibm.websphere.management.exception.AdminException:com.ibm.websphere.management.exception.ConnectorNotAvailableException”引起的问题 – AKS