如何使用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);
}
谢谢布鲁斯!我将不得不使用反射调用此代码,因为此代码可以在不同的容器(TomCat,WebLogic,WebSphere)中执行。所以我将不得不在条件下加载它。 – AKS
当您打开安全性时,它会更有趣;-) –
是的,您是对的。在安全开启的情况下,它提供了“由com.ibm.websphere.management.exception.AdminException:com.ibm.websphere.management.exception.ConnectorNotAvailableException”引起的问题 – AKS