Как программно вывести данные JMX? - PullRequest
11 голосов
/ 25 февраля 2010

Я хочу иметь возможность регистрировать все данные JMX, доступные через jconsole. Есть ли способ сделать это программно? Я создаю форму регистрации системы, и я хочу создать чередующиеся данные, которые можно просматривать с помощью некоторого инструмента, подобного jconsole.

Как бы я поступил так?

Ответы [ 2 ]

20 голосов
/ 25 февраля 2010

java.lang.management.ManagementFactory предоставляет вам доступ к данным JMX.

i.g.

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

Некоторые примеры доступны по запросу SO: [java] + managementfactory

Хорошее чтение: https://www.ibm.com/developerworks/library/j-jtp09196/index.html

Для полной реализации подключения к удаленной виртуальной машине:

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() );
}

Из информации вы можете запрашивать имена и атрибуты объектов по своему усмотрению.

5 голосов
/ 26 февраля 2010

Я использовал этот клиент командной строки JMX в качестве отправной точки, когда я хотел сделать то же самое.

...