最佳實踐 2 :設計互操作性。 擁有一個定義良好的管理模型,是走向 SOMA 的第一步。 Java 社區(qū)已經(jīng)意識到了這種需要,并且已經(jīng)通過 JSR 77 和 174 為 J2SE 和 J2EE 平臺定義了管理模型。
JSR 174 現(xiàn)在是 J2SE 5.0 規(guī)范的一部分,它提供了一種為 Java 虛擬機( Java Virtual Machine , JVM )公開管理模型的方式。它引入了平臺 MXBean 的概念,這個概念是用于建模,代表特定的 JVM 監(jiān)控指示器的,專門 JMX MBean 。這些 MXBean 可以用于監(jiān)控內(nèi)存使用、線程爭用問題、類裝載行為和垃圾收集頻率。
所有 MXBean 都被實現(xiàn)為 OpenMBean ,這是一個提供增強級別互操作性的 JMX Mbean 類型。 OpenMBean 限制了 Mbean 接口中某些數(shù)據(jù)類型的使用。這種限制最小化了客戶端對于訪問 Mbean 的需求,進一步確保了可以使用 XML 輕松訪問和操作這些 MBean ,同時不用求助于特定的封送和解除封送邏輯。
所有 MXBean 操作和屬性必須遵循特定的數(shù)據(jù)類型集合,叫做開放類型( open type ) ,它包括原始類型 ( int, long 和 boolean )、枚舉、 CompositeData 類型和 Map and List 類型。 清單 1 顯示了一個遵從這些數(shù)據(jù)類型要求的 ServletMXBean 接口的例子。
注意, J2SE 5 天生就不支持從用戶定義的 MXBean 到 Open Mbean 的映射,這意味著您無法引入您自己的 MXBean ,并指望它的行為像平臺 MXBean 一樣。可以開發(fā)一個一般類集合,來支持把用戶定義的 MXBean 作為 Open Mbean 注冊到 MBeanServer ,而且我們希望這些類將通過 JCP 過程變?yōu)榭捎谩?/P>
即使您沒有直接使用平臺 MXBean ,您仍然可以把您的 JMX MXBean 設計為符合 Open Mbean 的模型。最終結(jié)果是一個互操作性更強,并滿足 SOMA 需要的 JMX 接口。
補充 JMX
最佳實踐 3 :利用 J2EE 管理機制。 JSR 77 提出了一個為 J2EE 平臺公開管理信息的管理模型。模型支持管理大量 J2EE 資源的能力,包括 EJB 、 Web 容器、 JMS 和 JDBC 連接。該模型可以用于收集、監(jiān)控和控制有關(guān)應用服務器的運行時信息。這個通用模型支持使用管理工具,輕松地管理多個 J2EE 的廠商實現(xiàn)。
JSR 77 定義了許多抽象,在處理性能統(tǒng)計信息、應用程序狀態(tài)和關(guān)系方面,對 JMX 進行了補充。它定義了 Statistic 接口,用于對 J2EE 組件的性能數(shù)據(jù)建模。例如,模型定義了一個 EJBStats 接口,為所有的 EJB 組件指定了統(tǒng)計信息。這個接口公開了基本的 CountStatistics ,用于跟蹤,創(chuàng)建和刪除的對象的數(shù)目:
public interface EJBStats extends
Stats {
CountStatistic getCreateCount();
CountStatistic getRemoveCount();
可以通過 StateManageable 接口來管理一個對象的狀態(tài)。您可以查詢資源的狀態(tài),并啟動和停止特定的組件。另外, JSR 77 為模型中的代表關(guān)系定義了一個基本的慣例?梢远x包容關(guān)系,在這種關(guān)系中,特定的容器可以維護一個托管對象的數(shù)組。
我們可以將多個此類設計原則,應用到我們的管理模型例子(參見 圖 4)。我們說明了如何增強 MXBean ,來支持狀態(tài)管理、事件、規(guī)格和包容的能力。參考前面 清單 1 中的源代碼,您會發(fā)現(xiàn) Servlet MXBean 接口是按照前面描述的模型,來定義 Servlet Managed 對象的易管理性接口的。
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |