資源描述:
《《jmx一步步來》word版》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、1、JMX的HelloWorld一、JMX簡介什么是JMX?在一篇網(wǎng)文中是這樣說的:"JMX(JavaManagementExtensions)是一個為應(yīng)用程序植入管理功能的框架。JMX是一套標(biāo)準(zhǔn)的代理和服務(wù),實際上,用戶可以在任何Java應(yīng)用程序中使用這些代理和服務(wù)實現(xiàn)管理",這句話我現(xiàn)在看著還是不知所云,云里霧里。我們還是從JMX能給我們提供什么好處入手來理解吧。舉一個應(yīng)用實例:在一個系統(tǒng)中常常會有一些配置信息,比如服務(wù)的IP地址,端口號什么的,那么如何來寫這些代碼呢?1.程序初哥一般是寫死在程序里,到要改變時就去改程序,然后再編譯發(fā)布;2.程序熟手則一般把這些信息寫在一個
2、配置文件里(JAVA一般都是.properties文件),到要改變時只要改配置文件,但還是重新啟動系統(tǒng),以便讀取配置文件里的新值;3.程序好手則會寫一個段代碼,把配置值緩存起來,系統(tǒng)在讀值的時候,先看看配置文件有沒有更動。如有更改則重讀一遍,否則從緩存里讀取值4.程序高手則懂得取物為我所用,用JMX!把配置屬性集中在一個類,然后寫一個叫MBean的東東,再配置一下就輕松搞定了。而且JMX自動提供了一個WEB頁面來給你來改變這些配置信息。二、準(zhǔn)備工作JMX是一份規(guī)范,SUN依據(jù)這個規(guī)范在JDK(1.3、1.4、5.0)提供了JMX接口。而根據(jù)這個接口的實現(xiàn)則有很多種,比如Webl
3、ogic的JMX實現(xiàn)、MX4J、JBoss的JMX實現(xiàn)。在SUN自己也實現(xiàn)了一份,不過在JDK1.4之前,這件JMX實現(xiàn)(一些JAR包)是可選的,你得去它的網(wǎng)站上下載。JDK5.0則內(nèi)嵌了進來,安裝JDK5.0就可以開發(fā)基于JMX的代碼了。但JDK5.0并非包含所有SUN的關(guān)于JMX的代碼,有一些工具類是排除在JDK5.0之外的。下面根據(jù)所使用的JDK版本情況,談一談開發(fā)環(huán)境的準(zhǔn)備。1、JDK1.3、1.4去SUN網(wǎng)站下載SUN的JMX實現(xiàn),共兩個ZIP文件,下載網(wǎng)址:http://java.sun.com/products/JavaManagement/download.ht
4、ml。(1)jmx-1_2_1-ri.zip解壓后的lib目錄包含:jmxri.jar、jmxtools.jar(2)jmx_remote-1_0_1_03-ri.zip解壓后的lib目錄包含:jmxremote.jar、jmxremote_optional.jar、rmissl.jar如果在DOS下用命令行開發(fā),則把這五個JAR包加入到classpath系統(tǒng)變量中。如果你用Eclipse開發(fā),則把JAR包加入到項目屬性的Libratries(庫)引用中。2、JDK5.0JDK5.0的jrelibrt.jar已經(jīng)包含了jmxri.jar、jmxremote.jar、rmis
5、sl.jar三個包的代碼。如果你用到j(luò)mxtools.jar、jmxremote_optional.jar的類,則需要將這兩個類加入到classpath或Eclipse的項目庫引用中。3、我使用的開發(fā)環(huán)境:JDK5.0+Eclipse3.2。注:因為用到j(luò)mxtools.jar中的HtmlAdaptorServer類,所以將此包加入到項目庫引用中。jmxremote_optional.jar暫時不用到,不管它。三、HelloWorld實例1、Hello是一個需要被管理的類(普通類)java代碼1.package?com.sunhill.jmx;??2.??3.public?cl
6、ass?Hello?implements?HelloMBean?{??4.????private?String?name;??5.??6.????public?String?getName()?{??7.????????return?name;??8.????}??9.??10.????public?void?setName(String?name)?{??11.????????this.name?=?name;??12.????}??13.??14.????public?void?printHello()?{??15.????????System.out.println("H
7、ello?World,?"?+?name);??16.????}??17.??18.????public?void?printHello(String?whoName)?{??19.????????System.out.println("Hello?,?"?+?whoName);??20.????}??21.}??2、要管理Hello則必須創(chuàng)建一個相應(yīng)MBean,如下:java代碼1.package?com.sunhill.jmx;??2.??3.public?interface?Hello