<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    子在川上曰

      逝者如斯夫不舍晝夜
    隨筆 - 71, 文章 - 0, 評論 - 915, 引用 - 0
    數據加載中……

    [JMX一步步來] 1、JMX的Hello World

        文/陳剛 from www.chengang.com.cn at 2005-12-3

    一、JMX簡介

      什么是JMX?在一篇網文中是這樣說的:"JMX(Java Management Extensions)是一個為應用程序植入管理功能的框架。JMX是一套標準的代理和服務,實際上,用戶可以在任何Java應用程序中使用這些代理和服務實現管理",這句話我現在看著還是不知所云,云里霧里。

      我們還是從JMX能給我們提供什么好處入手來理解吧。舉一個應用實例:在一個系統中常常會有一些配置信息,比如服務的IP地址,端口號什么的,那么如何來寫這些代碼呢?
    1. 程序初哥一般是寫死在程序里,到要改變時就去改程序,然后再編譯發布;
    2. 程序熟手則一般把這些信息寫在一個配置文件里(JAVA一般都是*.properties文件),到要改變時只要改配置文件,但還是重新啟動系統,以便讀取配置文件里的新值;
    3. 程序好手則會寫一個段代碼,把配置值緩存起來,系統在讀值的時候,先看看配置文件有沒有更動。如有更改則重讀一遍,否則從緩存里讀取值
    4. 程序高手則懂得取物為我所用,用JMX!把配置屬性集中在一個類,然后寫一個叫MBean的東東,再配置一下就輕松搞定了。而且JMX自動提供了一個WEB頁面來給你來改變這些配置信息。

    二、準備工作


      JMX是一份規范,SUN依據這個規范在JDK(1.3、1.4、5.0)提供了JMX接口。而根據這個接口的實現則有很多種,比如Weblogic的JMX實現、MX4J、JBoss的JMX實現。在SUN自己也實現了一份,不過在JDK1.4之前,這件JMX實現(一些JAR包)是可選的,你得去它的網站上下載。JDK5.0則內嵌了進來,安裝JDK5.0就可以開發基于JMX的代碼了。

      但JDK5.0并非包含所有SUN的關于JMX的代碼,有一些工具類是排除在JDK5.0之外的。下面根據所使用的JDK版本情況,談一談開發環境的準備。
    1、JDK1.3、1.4
      去SUN網站下載SUN的JMX實現,共兩個ZIP文件,下載網址:http://java.sun.com/products/JavaManagement/download.html。
    (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下用命令行開發,則把這五個JAR包加入到classpath系統變量中。如果你用Eclipse開發,則把JAR包加入到項目屬性的Libratries(庫)引用中。
    2、JDK5.0
      JDK5.0的jre\lib\rt.jar已經包含了jmxri.jar、jmxremote.jar、rmissl.jar三個包的代碼。如果你用到jmxtools.jar、jmxremote_optional.jar的類,則需要將這兩個類加入到classpath或Eclipse的項目庫引用中。
    3、我使用的開發環境:JDK5.0 + Eclipse3.2。
      注:因為用到jmxtools.jar中的HtmlAdaptorServer類,所以將此包加入到項目庫引用中。jmxremote_optional.jar暫時不用到,不管它。

    三、HelloWorld實例
    1、Hello是一個需要被管理的類(普通類)
    /**
    * @author ChenGang 2005-12-3
    */
    public class Hello implements HelloMBean {
    private String name;
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public void printHello() {
    System.out.println("Hello World, " + name);
    }
    public void printHello(String whoName) {
    System.out.println("Hello , " + whoName);
    }
    }
    2、要管理Hello則必須創建一個相應MBean,如下:
    /**
    * @author ChenGang 2005-12-3
    */
    public interface HelloMBean {
    public String getName();
    public void setName(String name);
    public void printHello();
    public void printHello(String whoName);
    }
    說明:包含在MBean中方法都將是可以被管理的。MBean起名是有規范的,就是原類名后加上MBean字樣。
     
    3、創建一個Agent類
    import javax.management.MBeanServer;
    import javax.management.MBeanServerFactory;
    import javax.management.ObjectName;
    import com.sun.jdmk.comm.HtmlAdaptorServer;
    public class HelloAgent {
        public static void main(String[] args) throws Exception {
    MBeanServer server = MBeanServerFactory.createMBeanServer();
            ObjectName helloName = new ObjectName("chengang:name=HelloWorld");
    server.registerMBean(new Hello(), helloName);
            ObjectName adapterName = new ObjectName("HelloAgent:name=htmladapter,port=8082");
    HtmlAdaptorServer adapter = new HtmlAdaptorServer();
    server.registerMBean(adapter, adapterName);
            adapter.start();
    System.out.println("start.....");




    }
    }
    說明:
    • 先創建了一個MBeanServer,用來做MBean的容器
    • 將Hello這個類注入到MBeanServer中,注入需要創建一個ObjectName類
    • 創建一個AdaptorServer,這個類將決定MBean的管理界面,這里用最普通的Html型界面。AdaptorServer其實也是一個MBean。
    • chengang:name=HelloWorld的名字是有一定規則的,格式為:“域名:name=MBean名稱”,域名和MBean名稱都可以任意取。
    4、運行HelloAgent,然后打開網頁:http://localhost:8082/,效果圖如下:
    1133616885971_1841.jpg
    單擊“name=HelloWorld”鏈接進入,出現如下頁面
    1133616990271_7574.jpg

    依照下面紅線的步驟操作之后,在控制臺(我用Eclipse就是console視圖)得到如下輸出:

    1133617125401_8322.jpg

    五、總結

      在實際系統中我們可以把name變成決定數庫鏈接池的變量,這樣我就可以對系統的運行參數進行實現的監控和配置(管理)。而且也可以對一些方法(如printHello)進行遠程調用了。

      預告:下一篇將對JMX進行一些介紹,借助本篇的HelloWorld實例來灌輸一些概念。

    作者簡介

    陳剛,廣西桂林人,著作有《Eclipse從入門到精通》
    您可以通過其博客了解更多信息和文章:http://www.chenGang.com.cn

    posted on 2006-03-07 14:29 陳剛 閱讀(24854) 評論(7)  編輯  收藏 所屬分類: JMX

    評論

    # re: [JMX一步步來] 1、JMX的Hello World  回復  更多評論   

    圖片無法顯示??!
    2006-08-18 13:14 | 付闊

    # re: [JMX一步步來] 1、JMX的Hello World[未登錄]  回復  更多評論   

    寫的很清楚,作者思路很清晰!
    2007-11-19 12:30 | david

    # re: [JMX一步步來] 1、JMX的Hello World  回復  更多評論   

    感動中,現在正在做JEE項目 維護服務器和編譯打包的工作
    幫助很大,謝謝樓主,也謝謝樓主的家鄉的美景給我帶來無限美好的回憶
    2008-04-24 21:38 | Azrael

    # re: [JMX一步步來] 1、JMX的Hello World  回復  更多評論   

    恩,寫的太好了
    2010-07-16 15:18 | jiny

    # re: [JMX一步步來] 1、JMX的Hello World  回復  更多評論   

    正深入研究 JMX ,感謝樓主辛勤的勞動
    2010-08-12 11:39 | elam

    # re: [JMX一步步來] 1、JMX的Hello World[未登錄]  回復  更多評論   

    這里, HtmlAdaptorServer adapter = new HtmlAdaptorServer();

    我要寫成 HtmlAdaptorServer adapter = new HtmlAdaptorServer(8082);

    才能訪問頁面.
    2012-08-09 17:03 | Helen

    # re: [JMX一步步來] 1、JMX的Hello World  回復  更多評論   

    54
    2013-10-07 11:51 | 12
    主站蜘蛛池模板: 三级网站在线免费观看| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 一区二区三区在线免费看| 精品国产日韩亚洲一区| 未满十八私人高清免费影院| 免费中文字幕在线观看| 精品国产_亚洲人成在线| 又黄又爽无遮挡免费视频| 无人视频免费观看免费视频| 亚洲国产成人久久笫一页| 高清免费久久午夜精品| 精品亚洲一区二区三区在线观看| 一本大道一卡二大卡三卡免费 | 亚洲线精品一区二区三区 | 亚洲成a人片在线看| 成在人线AV无码免费| 亚洲丁香婷婷综合久久| 又大又粗又爽a级毛片免费看| 日韩毛片免费一二三| 亚洲色成人中文字幕网站| 成人精品一区二区三区不卡免费看 | 久久久精品免费视频| 亚洲视频欧洲视频| 在线免费观看一级毛片| 香港一级毛片免费看| 亚洲免费观看视频| 91免费人成网站在线观看18| 中文字幕乱码亚洲无线三区 | 亚洲一区二区三区AV无码| 国色精品va在线观看免费视频| 久久亚洲AV无码精品色午夜| 女人让男人免费桶爽30分钟| 香蕉视频免费在线播放| 亚洲AV中文无码字幕色三| 国拍在线精品视频免费观看| 国产亚洲精品2021自在线| 亚洲精品乱码久久久久久按摩| 成人福利免费视频| 永久免费精品影视网站| 亚洲an天堂an在线观看| 精品少妇人妻AV免费久久洗澡|