检索已注册的 JMX mbean 的信息

Retrieve the information of a registered JMX mbean

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

MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();

当我 运行 我的第二个程序时,它没有列出创建的 Mbean 和下面的两行 return false。

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

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

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

mbs.isRegistered(mbeanName);

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

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

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