检索已注册的 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。
我正在使用 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
正如您提到的,您是 运行 两个不同的 Java 程序,这意味着它们都有 不同的 MBean Server 并且 运行在不同的 JVM 中。
mbs.isRegistered(mbeanName);
上述方法将检查MBean 是否已注册到当前Java 进程的MBean 服务器。它无法查询另一个 Java 程序的 MBean 服务器。
要从另一个 Java 程序访问 MBean,您需要创建一个客户端,它将使用 RMI 查询您的第一个 Java 程序(包含您要管理的 MBean)。
您可能会发现本教程有助于实际理解 JMX monitoring using MBenas work。