检索已注册的JMX mbean

时间:2017-07-19 18:44:18

标签: java eclipse jmx jconsole

我正在使用Eclipse编写两个简单的Java程序。第一个程序创建一个简单的mbean并在Mbean服务器中注册它。第二个程序检索已注册的mbean的信息。要注册和检索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

1 个答案:

答案 0 :(得分:2)

正如您所提到的,您正在运行两个不同的Java程序,这意味着它们都具有不同的MBean Server 并且在不同的JVM中运行。

mbs.isRegistered(mbeanName);

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

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

您可能会发现本教程有助于真正了解JMX monitoring using MBenas work的方式。