2010-02-25 4 views

답변

20

java.lang.management.ManagementFactory을 사용하면 JMX 데이터에 액세스 할 수 있습니다.

예.

List<MemoryPoolMXBean> memPoolBeans = ManagementFactory.getMemoryPoolMXBeans(); 
for (MemoryPoolMXBean mpb : memPoolBeans) { 
    System.out.println("Memory Pool: " + mpb.getName()); 
} 

일부 샘플은 SO 쿼리에서 사용할 수 있습니다 [자바] +있다 ManagementFactory

좋은 읽기 : https://www.ibm.com/developerworks/library/j-jtp09196/index.html

전체 구현을위한 원격 VM에 연결 :

Map<String,String[]> env = new HashMap<String, String[]>(); 
env.put(JMXConnector.CREDENTIALS, new String[]{"user","pass"}); 
JMXServiceURL address = new JMXServiceURL("service:rmi:///jndi/rmi://host:port/jmxrmi"); 
JMXConnector connector = JMXConnectorFactory.connect(address,env); 
MBeanServerConnection mbs = connector.getMBeanServerConnection(); 

//get all mbeans 
Set<ObjectInstance> beans = mbs.queryMBeans(null,null); 

for(ObjectInstance instance : beans) 
{ 
    MBeanInfo info = mbs.getMBeanInfo(instance.getObjectName()); 
} 

에서 정보, 원하는대로 개체 이름과 특성을 쿼리 할 수 ​​있습니다.

+0

이 방법이 유용하지만 모든 개체 이름에서 모든 값을 쉽게 얻을 수있는 방법이 있습니까? 지금 당장 NA naDBeanServerConnection을 얻은 다음 mbs.getAttributes (..)를 사용하여 각 값을 개별적으로 쿼리해야합니다. 더 좋은 방법이 있습니까? –

+0

좋아요, queryMBeans로 모든 ObjectName을 가져올 수는 있지만 모든 속성을 자동으로 가져올 수는 없습니다. –

+0

: P. 자, 나는 모든 속성을 질의 할 수 있지만, 당신이하는 방식은 예외적으로 순환 적이다. 귀하의 답변을 편집하여 조금 더 완성한 다음 받아 들일 것입니다. –

5

동일한 내용을 원할 때이 command line JMX client을 시작점으로 사용했습니다.

+0

"Attributes"명령에 대해 10.4를 원했지만 링크가 끊어졌습니다. 내가 거울을 발견 할 수있는 어떤 생각? –

+0

나는 그것이 내가 가지고있는 버전이라고 생각한다. 여기서 얻을 수 있습니다 : http://drop.io/jmxclient – Mark

관련 문제