我正在尝试通过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的信息。请帮帮忙。
发布于 2013-03-26 20:26:43
我会将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
https://stackoverflow.com/questions/15635511
复制相似问题