2012-03-05 2 views
4

모니터링되는 모든 서블릿이 실행되는 동일한 Tomcat 인스턴스에서 실행되는 JMX 관리자로 서블릿을 구현하고 있습니다. JConsole을 열 때 모니터링되는 서블릿의 데이터를 볼 수 있습니다 . 내 매니저 서블릿 내에서 나는 다음과 같은 코드를 사용하여, 나는 모니터링 서블릿에서 만든 것을 포함, 가능한 표준의 MBean 모두 열거 할 수 있습니다 :MBean을 통해 데이터를 가져 오는 방법

JMXServiceURL url = new JMXServiceURL(  "service:jmx:rmi://localhost:1099/jndi/rmi://localhost:1099/jmxrmi"); 

mConnector = JMXConnectorFactory.connect(url); 
mMBSC = mConnector.getMBeanServerConnection(); 
mObjectName = new ObjectName("com.blahCompany.blah.blah:type=BlahBlah"); 

// just looking for one specific bean 
Set<ObjectName> myMbean = mMBSC.queryNames(mObjectName, null); 

if(myMBean.size() == 1) // I know it exists 
{ 
    MBeanInfo mbeanInfo = mMBSC.getMBeanInfo(<ObjectName extracted from Set>); 
    MBeanAttributeInfo[] mbeanAttributeInfos = mbeanInfo.getAttributes(); 

    for(MBeanAttributeInfo attribInfo : mbeanAttributeInfos) 
    { 
     if(attribInfo.isReadable()) 
     { 
      String attribName = attribInfo.getName(); 
      String attribReturnType = attribInfo.getType(); 

      // The data's somewhere ... where???? 
      // In the MBeanInfo? 
      // In the MBeanAttributeInfo?? 
     } 
    } 
} 

을 문제는 나도 몰라 방법에 실제로 데이터을이 MBean에서 추출하십시오. 아무도 묻지 않았기 때문에 대답은 분명해야합니다. 그러나 나는 명백한 것을 간과 할 선물이 있습니다. 귀하의 도움을 감사하게 생각합니다.

Object value = mMBSC.getAttribute(objectName, attributeName); 

또는 MBean 인터페이스의 인스턴스를 얻고 당신이 그런 식으로 액세스 할 수 있도록 프록시 객체를 생성 :

+0

mbean 서버에 대한 로컬 액세스와 관련된 내용으로 내 대답이 업데이트되었습니다. 귀하의 질문에서 이해할 수있는 것이 상황에 필요한 것입니다 (URL을 통해 연결할 필요가 없음). 성능이 원격 연결을 사용하는 것보다 낫다고 생각합니다. –

답변

5

당신이 할 필요가 아래 같은 것입니다. 이 작업을 수행하는 방법에 대한 자습서는 다음과 같습니다. http://docs.oracle.com/javase/tutorial/jmx/remote/custom.html

하나의 참고 사항, 이것은 원격 연결을 전제로하지만 귀하의 질문에 귀하가 로컬로 콩에 액세스하는 것으로 보입니까? 이 경우 platform.getMBeanServer()를 사용하여 MBeanServer에 직접 액세스 할 수 있습니다. 예 : MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();

+0

분명했습니다. 실수로 API 문서 *를 자세히 읽지 못했습니다. 도와 주셔서 감사합니다. – joe7pak

+0

Bean 로컬 관리자 ... 관리자와 Bean 모두가 동일한 JVM에 있습니다. 훨씬 더 직접적으로 보이는 것처럼 나는 MBeanServer 메소드를 시도 할 것이다. 다시 한번 감사드립니다. – joe7pak

관련 문제