我在Java 1.6中使用平臺MBeans服務器,運行在OSGi容器中。檢測新註冊的MBean
主要使用MBeans進行統計計數器和事件。它們的實現在一個bundle中,但是它們在其他幾個bundle中實例化。每個MBean都使用平臺MBean服務器進行自我修復。
問題是,當我通過JMX連接並查詢MBean時,我只獲取那些當前已註冊的,並且在它們被實例化之前不會被註冊(因爲靜態類直到第一個訪問,或者是因爲捆綁尚未啓動,或者計數器在某些邏輯不會存在,直到第一次使用)
深,我需要訂閱「註冊」中的MBean服務器事件的某種方式。或者確定何時將新MBean添加到服務器的其他方式。檢測到已刪除的MBean將是額外的好處,但不是必需的。
我得到的唯一解決方案基本上是一個線程,每5秒鐘輪詢一次服務器,並將結果與保存的MBean列表進行比較,這相當難看。
我很希望有一個更簡單的方法來做到這一點:( 如「偵聽新的註冊」事件深處的未公開的API或什麼東西.. – MarcB 2011-03-29 08:39:46
這並不能解決您的主要問題:查看尚未註冊的MBean。 – 2011-03-29 10:23:29
那麼,我沒有看到他們,當他們沒有註冊(雖然那會很好)。 查明他們註冊的時間就足夠了。 – MarcB 2011-03-29 10:27:40