Мониторинг нескольких объектов через 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