JMX規範(二):裝置層

來源:互聯網
上載者:User

該層定義了如何?JMX管理資源的規範。一個JMX管理資源可以是一個Java應用、一個服務或一個裝置,它們可以用Java開發,或者至少能用Java進行封裝,並且能被置入JMX架構中,從而成為JMX的一個管理構件(Managed Bean),簡稱MBean。管理構件可以是標準的,也可以是動態,標準的管理構件遵從JavaBeans構件的設計模式;動態管理構件遵從特定的介面,提供了更大的靈活性。

該層還定義了通知機制以及實現管理構件的輔助中繼資料類。

管理構件(MBean)
在JMX規範中,管理構件定義如下:它是一個能代表管理資源的Java對象,遵從一定的設計模式,還需實現該規範定義的特定的介面。該定義了保證了所有的管理構件以一種標準的方式來表示被管理資源。

管理介面就是被管理資源暴露出的一些資訊,通過對這些資訊的修改就能控制被管理資源。一個管理構件的管理介面包括:
1)能被接觸的屬性值;
2)能夠執行的操作;
3)能發出的通知事件;
4)管理構件的構建器。

管理構件通過公用的方法以及遵從特定的設計模式封裝了屬性和操作,以便暴露給管理應用程式。例如,一個唯讀屬性在管理構件中只有Get方法,既有Get又有Set方法表示是一個可讀寫的屬性。

其餘的JMX的構件,例如JMX代理提供的各種服務,也是作為一個管理構件註冊到代理中才能提供相應的服務。

JMX對管理構件的儲存位置沒有任何限制,管理構件可以儲存在運行JMX代理的Java虛擬機器的類路徑的任何位置,也可以從網路上的任何位置匯入。

JMX定義了四種管理構件:標準、動態、開放和模型管理構件。每一種管理構件可以根據不同的環境需要進行制定。

1.標準管理構件

標準管理構件的設計和實現是最簡單的,它們的管理介面通過方法名來描述。標準管理構件的實現依靠一組命名規則,稱之為設計模式。這些命名規則定義了屬性和操作。檢查標準管理構件介面和應用設計模式的過程被稱為內省(Introspection)[22]。JMX代理通過內省來查看每一個註冊在MBean 伺服器上的管理構件的方法和超類,看它是否遵從一定設計模式,決定它是否代表了一個管理構件,並辨認出它的屬性和操作。

2.動態管理構件

動態管理構件提供了更大的靈活性,它可以在運行期暴露自己的管理介面。它的實現是通過實現一個特定的介面DynamicMBean(如)。


JMX代理通過getMBeanInfo方法來擷取該動態管理構件暴露的管理介面,該方法返回的對象是MbeanInfo類的執行個體,包含了屬性和操作的簽名。由於該方法的調用是發生在動態管理構件向MBean伺服器註冊以後,因此管理介面是在運行期擷取的。不同於標準管理構件,JMX代理不需要通過內省機制來確定動態管理構件的管理介面。由於DynamicMBean的介面是不變的,因此可以屏蔽實現細節。由於這種在運行期擷取管理介面的特性,動態管理構件提供了更大的靈活性。

3.開放管理構件

開放管理構件是一種專門化的動態管理構件,其中所有的與該管理構件相關的參數、傳回型別和屬性都圍繞一組預定義的資料類型(String、Integer、Float 等)來建立,並且通過一組特定的介面來進行自我描述。JMX代理通過獲得一個OpenMBeanInfo對象來擷取開放管理構件的管理介面,OpenMBeanInfo是MbeanInfo的子類。

4.模型管理構件

模型管理構件也是一種專門化的動態管理構件。它是預製的、通用的和動態 MBean 類,已經包含了所有必要預設行為的實現,並允許在運行時添加或覆蓋需要定製的那些實現。JMX規範規定該類必須實現為javax.management.modelmbean.RequiredModelMBean,管理者要做的就是執行個體化該類,並配置該構件的預設行為並註冊到JMX代理中,即可實現對資源的管理。JMX代理通過獲得一個ModelMBeanInfo對象來擷取管理介面。

模型管理構件具有以下新的特點[23]:
1)持久性
定義了持久機制,可以利用Java的序列化或JDBC來儲存模型MBean的狀態。
2)通知和日誌功能
能記錄每一個發出的通知,並能自動發出屬性變化通知。
3)屬性值緩衝
具有緩衝屬性值的能力。

通知模型
一個管理構件提供的管理介面允許代理對其管理資源進行控制和配置。然而,對管理複雜的分布式系統來說,這些介面只是提供了一部分功能。通常,管理應用程式需要對狀態變化或者當特別情況發生變化時作出反映。

為此,JMX定義了通知模型。通知模型僅僅涉及了在同一個JMX代理中的管理構件之間的事件傳播。JMX通知模型依靠以下幾個部分:
1)Notification,一個通用的事件類型,該類標識事件的類型,可以被直接使用,也可以根據傳遞的事件的需要而被擴充。
2)NotificationListener介面,接受通知的對象需實現此介面。
3)NotificationFilter介面,作為通知過濾器的對象需實現此介面,為通知監聽者提供了一個過濾通知的過濾器。
4)NotificationBroadcaster介面,通知寄件者需實現此介面,該介面允許希望得到通知的監聽者註冊。

發送一個通用類型的通知,任何一個監聽者都會得到該通知。因此,監聽者需提供過濾器來選擇所需要接受的通知。

任何類型的管理構件,標準的或動態,都可以作為一個通知寄件者,也可以作為一個通知監聽者,或兩者都是。

輔助中繼資料類
輔助中繼資料類用來描述管理構件。輔助中繼資料類不僅被用來內省標準管理構件,也被動態管理構件用來進行自我描述。這些類根據屬性、操作、構建器和通告描述了管理介面。JMX代理通過這些中繼資料類管理所有管理構件,而不管這些管理構件的類型。

部分輔助元類如下:
1)MBeanInfo--包含了屬性、操作、構建器和通知的資訊。
2)MBeanFeatureInfo--為下面類的超類。
3)MBeanAttributeInfo--用來描述管理構件中的屬性。
4)MBeanConstructorInfo--用來描述管理構件中的構建器。
5)MBeanOperationInfo--用來描述管理構件中的操作。
6)MBeanParameterInfo--用來描述管理構件操作或構建器的參數。
7)MBeanNotificationInfo--用來描述管理構件發出的通知。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.