2012-01-19 36 views
0

我是新來的JBoss和想知道是什麼在web.xml ServiceMBean和負載上啓動的servlet標籤之間的區別是什麼?另外,我想知道哪一個會先被加載或是同時被加載?在什麼情況下,我應該使用MBean,何時使用啓動servlet或無關緊要?啓動類(擴展ServiceMBean)VS時加載的啓動servlet的

我需要編寫一個類/ servlet的,如果所有必需的系統屬性(例如-DINSTALL_DIR =等等)被設置來驗證。如果不是,那就在那裏停下來。否則繼續並啓動應用程序。

在此先感謝

-A

回答

1

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的原因。