2017-07-19 73 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