0

我正在尝试通过 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。请帮忙。

4

1 回答 1

0

我会type=变成name=. 如果您查看ObjectNamejavadocs,他们的所有示例都具有name=我认为 jconsole 用于显示 bean 的内容。可能是您有两个基本上具有空名称的 bean 并且它们相互覆盖。它可能使用对象的类作为名称。

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

如果您在 Jconsole 中将其拉起并单击 bean 名称,它应该会显示ObjectName它正在使用的名称。您可能会在那里看到一个推断的名称。

顺便说一句,我的SimpleJMX 包强制创建 ObjectName 的问题:

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

这将创建ObjectNamej256:name=LookupCache

于 2013-03-26T12:26:43.023 回答