一、JMX簡(jiǎn)介
JMX是一種JAVA的正式規(guī)范,它主要目的是讓程序且有被管理的功能,那么怎么理解所謂的“被管理”呢?試想你開發(fā)了一個(gè)軟件(如WEB網(wǎng)
站),它是在24小時(shí)不簡(jiǎn)斷運(yùn)行的,那么你可能會(huì)想要“監(jiān)控”這個(gè)軟件的運(yùn)行情況,比如收到了多少數(shù)據(jù),有多少人登錄等等。或者你又想“配置”這個(gè)軟件,
比如現(xiàn)在訪問人數(shù)比較多,你想把數(shù)據(jù)連接池設(shè)置得大一些。
當(dāng)然,你也許會(huì)專門為這些管理來開發(fā)軟件,但如果你借助JMX,則會(huì)發(fā)現(xiàn)創(chuàng)建這樣的管理程序是如此簡(jiǎn)單。因?yàn)槟銦o需為管理程序來開發(fā)界面,已經(jīng)
有通用的JMX管理軟件,如MC4J,或者是用一般都附帶提供的HTML網(wǎng)頁來管理,你要做的僅僅是將自己要被管理和監(jiān)控類的按照J(rèn)MX規(guī)范修改一下即
可。
中間件軟件WebLogic的管理頁面就是基于JMX開發(fā)的,而JBoss則整個(gè)系統(tǒng)都基于JMX構(gòu)架。下面將JMX的一些概念,從JMX規(guī)范轉(zhuǎn)帖如下:
二、JMX構(gòu)架中的各層及相關(guān)的組件
-
工具層(Instrumentation Level)
????(a) MBeans(標(biāo)準(zhǔn)的,動(dòng)態(tài)的,開放的和模型MBeans)
????(b) 通知模型:Notification、NotificationListener等類
????(c) MBean元數(shù)據(jù)類:Attribute、Opreator等類
-
代理層(Agent Level)
????(a) MBean Server
????(b) 代理服務(wù)。如前一篇的HtmlAdaptorServer等。
MBean中有g(shù)etter和setter的就是屬性,如前一篇的Hello類中Name。如果只有g(shù)etter則表示該屬性只讀。一共有四種MBean,如下:
-
標(biāo)準(zhǔn)MBeans(Standard MBeans)設(shè)計(jì)和實(shí)現(xiàn)是最簡(jiǎn)單的,這類MBean使用自己的方法名作為管理接口;
-
動(dòng)態(tài)MBeans(Dynamic MBeans)必須實(shí)現(xiàn)一個(gè)指定的接口,由于動(dòng)態(tài)MBeans在運(yùn)行期間暴露它們的管理接口,因此更為靈活;
-
開放MBeans(Open MBeans)屬于動(dòng)態(tài)MBeans,這類MBean依靠基礎(chǔ)數(shù)據(jù)類型來實(shí)現(xiàn)通用管理,并為友情用戶進(jìn)行自我聲明;
-
模型MBeans(Model MBeans)同樣也是動(dòng)態(tài)MBeans,這類MBeans是完全可配置的,在運(yùn)行期間進(jìn)行自我聲明;它們?yōu)橘Y源動(dòng)態(tài)工具提供一個(gè)一般性的,有默認(rèn)行為的MBeans類。
在前一篇中的Hello、HelloMBean就是一個(gè)標(biāo)準(zhǔn)MBeans(Standard MBeans)。后面接下來的幾篇,我們會(huì)繼續(xù)介紹其他幾種MBean。