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