2017-09-17 16 views
0

저는 Server1과 Server2의 일부로 WebSphere에 하나의 war 응용 프로그램을 배포했습니다. 이 두 서버가있는 클러스터가 있습니다. 전쟁 응용 프로그램의 일부로 Java 코드를 작성하고 클러스터 노드 세부 정보를 가져 오려고합니다.PlatformMbeanServer를 사용하여 Websphere에서 클러스터 노드를 얻는 방법은 무엇입니까?

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

위의 코드는 클러스터 mbean을 나열하지 않습니다. 실제로 모든 mbean이 여기에 나열되지는 않습니다.

또한 Jconsole에서 클러스터 Mbean이 여기에 표시되지 않습니다.

내가 뭔가를 잃어버린거야?

답변

1

WebSphere MBeans는 JVM Mbean과 동일한 MBean 서버에 있지 않습니다. 다음은 모든 WebSphere MBean을 나열하는 코드입니다. 클러스터 Mbean은 배치 관리자에 있으므로, 우리는 그것을 위해 찾아야 만한다.

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

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

감사합니다. Bruce! 이 코드는 다른 컨테이너 (TomCat, WebLogic, WebSphere)에서 실행될 수 있으므로 리플렉션을 사용하여이 코드를 호출해야합니다. 그래서 나는 조건에 그것을로드해야합니다. – AKS

+0

보안을 켜면 더 재미있을 것입니다 ;-) –

+0

네, 맞습니다. 보안을 ON으로 설정하면 "원인 : com.ibm.websphere.management.exception.AdminException : com.ibm.websphere.management.exception.ConnectorNotAvailableException"이 표시됩니다. – AKS