2017-07-19 180 views
1

我正在使用Eclipse编写两个简单的Java程序。第一个程序创建一个简单的mbean并将其注册到Mbean服务器中。第二个程序检索注册的mbean的信息。要注册和检索我用下面的代码来创建服务器同时计划在MBean:检索已注册JMX的信息mbean

MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); 

当我跑我的第二个程序没有列出创建MBean并在下面两行返回false。

ObjectName mbeanName = new ObjectName("HelloAgent:name=helloWorld1"); 
mbs.isRegistered(mbeanName); 

但是,我可以看到它并使用JConsole访问它。 我错过了什么吗? 谢谢! JConsole的snapshot1 jconsole snapshot 1 JConsole的快照2 jconsole snapshot 2

回答

2

至于你提到你正在运行两个不同的Java程序的,这意味着它们都具有不同的MBean服务器并在不同的JVM运行。

mbs.isRegistered(mbeanName); 

上述方法将检查MBean是否注册到当前Java进程的MBean服务器。它无法查询另一个Java程序的MBean服务器。

要从另一个Java程序访问MBean,您需要创建一个客户端,它将使用RMI查询您的第一个Java程序(包含要管理的MBean)。

您可能会发现本教程有助于实际了解JMX monitoring using MBenas work