ServiceMBean是JMX,它是你的JVM的一部分。 web.xml中的load-on-startup servlet標籤是J2EE應用程序的一部分。
JMX是從JDK 1.5開始的J2SE的一部分。因此,每個JVM可以有一個ServiceMBean。不是每個應用。 JMX被用於監視和管理JVM。它提供對以下信息的訪問:加載的類的數量和正在運行的線程,內存消耗,垃圾收集統計信息,按需死鎖檢測等。另一個常見用途是刷新緩存。
JMX將允許您使用您的JMX容器支持的任何管理控制檯來測試應用程序並對其進行控制/監視。一個例子是實現了一個參考的數據高速緩存中的Web應用程序...
我們已經是以前我們偶爾會需要刷新緩存,因爲客戶名稱在數據庫中更改的問題。如果我們在MBean接口上有刷新方法,那麼我們應該能夠使用JMX控制檯來觸發此事件。 JMX控制檯可能是我們的J2EE服務器附帶的Web或胖客戶端。我們的J2EE服務器也可能支持SNMP。這意味着我們可以從標準Tivoli或UniCenter控制檯調用該方法。 http://www.theserverside.com/news/1364664/J2EE-Application-Management-The-Power-of-JMX
你不需要爲了引發一些asynchrious行動ServiceMBean遠程訪問。此外,您需要驗證應用程序的範圍,而不是整個JVM(理論上,您可以在ServiceMBean中處理此問題)。因此,更自然的做法是將其作爲web.xml中的啓動時加載servlet標籤。這樣,每次啓動應用程序時都會進行驗證。
再澄清一點: ServiceMBean是JBoss-way來編寫JMX。所有MBean都是服務器範圍(不是應用程序範圍)。這就是我在上面自由使用MBean和ServiceMBean的原因。