Мониторинг нескольких объектов через JConsole

Я пытаюсь отслеживать объекты моего приложения через JMX в JConsole. Но в JConsole я не могу видеть несколько объектов одного и того же класса. Вот мой код:

ApplicationCache cache1 = new ApplicationCache();
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName("org.javalobby.tnt.jmx:type=ApplicationCacheMBean1");
mbs.registerMBean(cache1, name);
imitateActivity(cache1);

ApplicationCache cache2 = new ApplicationCache();
mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName name2 = new ObjectName("org.javalobby.tnt.jmx:type=ApplicationCacheMBean2");
mbs.registerMBean(cache2, name2);
imitateActivity(cache2);

В интерфейсе JConsole я могу видеть информацию о ApplicationCacheMBean1 только. Там нет информации о ApplicationCacheMBean2, Пожалуйста помоги.

1 ответ

Я бы поменял type= быть name=, Если вы посмотрите на ObjectName Javadocs, все их образцы имеют name= я считаю, что jconsole использует для отображения bean-компонентов. Возможно, у вас есть два bean-компонента, которые в основном имеют нулевое имя, и они перезаписывают друг друга. Это может быть использование класса объекта в качестве имени.

new ObjectName("org.javalobby.tnt.jmx:name=ApplicationCacheMBean1");
new ObjectName("org.javalobby.tnt.jmx:name=ApplicationCacheMBean2");

Если вы откроете его в Jconsole и нажмете имя бина, на нем должно появиться ObjectName что он использует. Вы можете увидеть предполагаемое имя там.

Кроме того, мой пакет SimpleJMX вызывает проблему при создании ObjectName:

@JmxResource(domainName = "j256", beanName = "LookupCache")
public class LookupCache {

Это создает ObjectName: j256:name=LookupCache

Другие вопросы по тегам