我试图通过JConsole中的JMX监视我的应用程序的对象。但是在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 UI中,我只能看到ApplicationCacheMBean1
的信息。没有关于ApplicationCacheMBean2
的信息。请帮忙。
答案 0 :(得分:0)
我会将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中提取它并单击bean名称,它应该显示它正在使用的ObjectName
。您可能会在那里看到推断的名称。
顺便说一句,我的SimpleJMX package强制创建了ObjectName:
@JmxResource(domainName = "j256", beanName = "LookupCache")
public class LookupCache {
这会创建ObjectName
:j256:name=LookupCache