2010-05-13 69 views
2

我需要JMX和Java EE的一些指導。JMX-MBean應用程序部署自動註冊

我知道(經過幾周的研究),就部署而言,JMX規範是丟失的。針對我所尋找的供應商特定的實現有幾個,但沒有一個是跨供應商。我想自動部署MBeans並在服務器上註冊。我需要服務器在應用程序部署時加載和註冊我的MBeand,並在應用程序未部署時除去。

我開發出: NetBean 6.7.1,GlassFish的2.1,Java EE 5中,EJB 3

更具體,我需要一種方法來管理定時服務運行。我的應用程序需要運行不同的歸檔代理和批量報告。我希望JMX能給我遠程訪問來創建和管理計時器服務,並讓用戶創建他自己的計劃。如果JMX在應用程序部署時自動註冊,用戶可以立即連接和管理日程安排。另一方面,EJB如何連接/訪問MBean?

非常感謝提前。 嘎迪。

回答

4

我在幾年前調查了Glassfish中的JMX和EJB,所以我不記得所有的細節。但這可能仍然有幫助。

  1. Glassfish的特定JMX。 Glassfish有AMXcustom MBean可以部署。 AFAIK,這些bean意味着監視服務器本身,而不是與特定的應用程序密切相互作用。這樣的bean可以持久化,並且Glassfish將在重新啓動的某個地方存儲它們的值。也許看看。

  2. 註冊和查找。您可以使用MBeanPlatformMBeanServer從應用程序中隨時註冊MBean。見this鏈接,我不記得確切。您還可以查找其他JMX bean並在其上調用操作。查找的名字雖然有點瘋狂。您可以在應用程序時註冊MBean。從ServletContextListener開始。

  3. 類加載器和部署。 MBeans和EJB實例在不同的Classloader中。我認爲您需要將.jar與MBean實現放在Glassfish部署目錄結構中,或者通過管理控制檯將其添加到類路徑中的.jar列表中。您可以相對容易地從EJB模塊中註冊一個bean,但至少從我的經驗來看,一個bean不能輕鬆訪問EJB。

我設法使用純JMX從我的EJB應用程序公開統計數據,並且工作得相當好。但是我不知道是否足夠讓一些更具交互性的東西,比如你想讓EJB根據配置了JMX的計時器改變它們的行爲。我擔心你會遇到這種方法的麻煩。

希望它有幫助,儘管我記憶中的含糊不清。

+0

謝謝ewernli,我很欣賞你回答我的問題的時間。也許你可以從你的經驗中建議一種靈活的方式來管理/配置定時器服務,以便它不會被硬編碼到產品中?非常感謝,Gadi。 – Gadi 2010-05-14 05:01:32

+0

其他選項(1)在'env-entry'中使用部署描述符(2)使用數據庫存儲配置信息(3)使用外部配置文件。 – ewernli 2010-05-14 07:14:42