2.1.2.1 管理構(gòu)件(MBean)
在JMX規(guī)范中,管理構(gòu)件定義如下:它是一個能代表管理資源的Java對象,遵從一定的設(shè)計(jì)模式,還需實(shí)現(xiàn)該規(guī)范定義的特定的接口。該定義了保證了所有的管理構(gòu)件以一種標(biāo)準(zhǔn)的方式來表示被管理資源。
管理接口就是被管理資源暴露出的一些信息,通過對這些信息的修改就能控制被管理資源。一個管理構(gòu)件的管理接口包括:
1)能被接觸的屬性值;
2)能夠執(zhí)行的操作;
3)能發(fā)出的通知事件;
4)管理構(gòu)件的構(gòu)建器。
管理構(gòu)件通過公共的方法以及遵從特定的設(shè)計(jì)模式封裝了屬性和操作,以便暴露給管理應(yīng)用程序。例如,一個只讀屬性在管理構(gòu)件中只有Get方法,既有Get又有Set方法表示是一個可讀寫的屬性。
其余的JMX的構(gòu)件,例如JMX代理提供的各種服務(wù),也是作為一個管理構(gòu)件注冊到代理中才能提供相應(yīng)的服務(wù)。
JMX對管理構(gòu)件的存儲位置沒有任何限制,管理構(gòu)件可以存儲在運(yùn)行JMX代理的Java虛擬機(jī)的類路徑的任何位置,也可以從網(wǎng)絡(luò)上的任何位置導(dǎo)入。
JMX定義了四種管理構(gòu)件:標(biāo)準(zhǔn)、動態(tài)、開放和模型管理構(gòu)件。每一種管理構(gòu)件可以根據(jù)不同的環(huán)境需要進(jìn)行制定。
1.標(biāo)準(zhǔn)管理構(gòu)件
標(biāo)準(zhǔn)管理構(gòu)件的設(shè)計(jì)和實(shí)現(xiàn)是最簡單的,它們的管理接口通過方法名來描述。標(biāo)準(zhǔn)管理構(gòu)件的實(shí)現(xiàn)依靠一組命名規(guī)則,稱之為設(shè)計(jì)模式。這些命名規(guī)則定義了屬性和操作。檢查標(biāo)準(zhǔn)管理構(gòu)件接口和應(yīng)用設(shè)計(jì)模式的過程被稱為內(nèi)省(Introspection)[22]。JMX代理通過內(nèi)省來查看每一個注冊在MBean 服務(wù)器上的管理構(gòu)件的方法和超類,看它是否遵從一定設(shè)計(jì)模式,決定它是否代表了一個管理構(gòu)件,并辨認(rèn)出它的屬性和操作。
2.動態(tài)管理構(gòu)件
動態(tài)管理構(gòu)件提供了更大的靈活性,它可以在運(yùn)行期暴露自己的管理接口。它的實(shí)現(xiàn)是通過實(shí)現(xiàn)一個特定的接口DynamicMBean(如下圖)。
JMX代理通過getMBeanInfo方法來獲取該動態(tài)管理構(gòu)件暴露的管理接口,該方法返回的對象是MbeanInfo類的實(shí)例,包含了屬性和操作的簽名。由于該方法的調(diào)用是發(fā)生在動態(tài)管理構(gòu)件向MBean服務(wù)器注冊以后,因此管理接口是在運(yùn)行期獲取的。不同于標(biāo)準(zhǔn)管理構(gòu)件,JMX代理不需要通過內(nèi)省機(jī)制來確定動態(tài)管理構(gòu)件的管理接口。由于DynamicMBean的接口是不變的,因此可以屏蔽實(shí)現(xiàn)細(xì)節(jié)。由于這種在運(yùn)行期獲取管理接口的特性,動態(tài)管理構(gòu)件提供了更大的靈活性。
3.開放管理構(gòu)件
開放管理構(gòu)件是一種專門化的動態(tài)管理構(gòu)件,其中所有的與該管理構(gòu)件相關(guān)的參數(shù)、返回類型和屬性都圍繞一組預(yù)定義的數(shù)據(jù)類型(String、Integer、Float 等)來建立,并且通過一組特定的接口來進(jìn)行自我描述。JMX代理通過獲得一個OpenMBeanInfo對象來獲取開放管理構(gòu)件的管理接口,OpenMBeanInfo是MbeanInfo的子類。
4.模型管理構(gòu)件
模型管理構(gòu)件也是一種專門化的動態(tài)管理構(gòu)件。它是預(yù)制的、通用的和動態(tài)的 MBean 類,已經(jīng)包含了所有必要缺省行為的實(shí)現(xiàn),并允許在運(yùn)行時(shí)添加或覆蓋需要定制的那些實(shí)現(xiàn)。JMX規(guī)范規(guī)定該類必須實(shí)現(xiàn)為javax.management.modelmbean.RequiredModelMBean,管理者要做的就是實(shí)例化該類,并配置該構(gòu)件的默認(rèn)行為并注冊到JMX代理中,即可實(shí)現(xiàn)對資源的管理。JMX代理通過獲得一個ModelMBeanInfo對象來獲取管理接口。
模型管理構(gòu)件具有以下新的特點(diǎn)[23]:
1)持久性
定義了持久機(jī)制,可以利用Java的序列化或JDBC來存儲模型MBean的狀態(tài)。
2)通知和日志功能
能記錄每一個發(fā)出的通知,并能自動發(fā)出屬性變化通知。
3)屬性值緩存
具有緩存屬性值的能力。
相關(guān)推薦:計(jì)算機(jī)等級考試二級Java經(jīng)典算法大全匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |