Как программно сбрасывать данные JMX?

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

Как мне это сделать?

Ответ 1

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

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