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

如何使用PlatformMbeanServer在Websphere中获取集群节点?,websphere,jmx,mbeans,Websphere,Jmx,Mbeans,我在WebSphere中部署了一个war应用程序,作为Server1和Server2的一部分。 有一个集群包含这两个服务器。 我想编写java代码作为war应用程序的一部分,并获取集群节点的详细信息 MBeanServer mbServer = ManagementFactory.getPlatformMBeanServer(); Set mBeanSet = mbServer.queryMBeans(null, null); 上面的代码没有列出集群mbean,事实上,这里并没有列出所

我在WebSphere中部署了一个war应用程序,作为Server1和Server2的一部分。 有一个集群包含这两个服务器。 我想编写java代码作为war应用程序的一部分,并获取集群节点的详细信息

  MBeanServer mbServer = ManagementFactory.getPlatformMBeanServer();
  Set mBeanSet = mbServer.queryMBeans(null, null);
上面的代码没有列出集群mbean,事实上,这里并没有列出所有mbean

同样从Jconsole,这里没有列出集群Mbean


我遗漏了什么吗?

WebSphere MBean与JVM MBean不在同一个MBean服务器中。下面是列出所有WebSphereMBean的代码。因为集群Mbean在部署管理器上,所以我们必须在那里寻找它

      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)中执行。因此,我将不得不在条件上加载它。当您打开安全性时,它将更加有趣;-)是的,你说得对。启用安全性后,它会给出“由以下原因引起:com.ibm.websphere.management.exception.AdminException:com.ibm.websphere.management.exception.ConnectorNotAvailableException”来处理mbean,代码必须在具有执行mbean操作权限的经过身份验证的用户的ID下运行,类似于他们是否以wsadmin用户身份登录。但是connectorNotAvailable异常表明服务器无法以安全的方式连接到节点代理或dmgr,因此这可能是安装问题。如果您只是想了解拓扑信息,有很多方法可以在不需要这些特权的情况下获取拓扑信息。谢谢!我只是在寻找拓扑信息,我还想使用垃圾收集通知bean,以便在发生时可以运行收集所有GC度量。