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

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

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

    hengheng123456789

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      297 Posts :: 68 Stories :: 144 Comments :: 0 Trackbacks
    來源:http://m.tkk7.com/chengang/archive/2006/03/07/34091.html

    一、? HelloWorld實(shí)例

    1、準(zhǔn)備工作

      JBOSS實(shí)現(xiàn)了JMX規(guī)范,這個(gè)實(shí)例是基于JBOSS來實(shí)現(xiàn)的。請先去下載一個(gè)JBOSS,我是jboss-3.2.6,下載地址:http://www.jboss.com/downloads/index#as。這個(gè)實(shí)例需要JBOSS的兩個(gè)JAR包的支持:jboss-system-3.2.6.jarjboss-jmx-3.2.6.jar,如果你和我一樣用Eclipse來開發(fā)(推薦),那么把這個(gè)兩個(gè)包加入到項(xiàng)目的庫引用中(加入到庫引用的方法參考前面兩章)。

    2、程序代碼

      假設(shè)我們有一個(gè)叫message的屬性要需要經(jīng)常進(jìn)行改動配置的,那么我們就把它寫成一個(gè)MBean

    1HelloWorldServiceMBean接口

      在寫MBean之前,我們先需要寫一個(gè)MBean接口,接口里的方法都是屬性的set/get方法。這個(gè)接口必須繼承接口ServiceMBean


    import org.jboss.system.ServiceMBean;
    public interface HelloWorldServiceMBean extends ServiceMBean {
    ??? String getMessage();
    ??? void setMessage(String message);
    }

    2HelloWorldService實(shí)現(xiàn)類

      然后寫出HelloWorldServiceMBean接口的實(shí)現(xiàn)類HelloWorldService,這個(gè)實(shí)現(xiàn)類還必須繼承ServiceMBeanSupport類。這種類再簡單不過了,就是屬性和相應(yīng)的set/get方法,EJB中叫實(shí)體類、Hibernate中叫POJO

    import org.jboss.system.ServiceMBeanSupport;
    public class HelloWorldService extends ServiceMBeanSupport implements HelloWorldServiceMBean {
    ??? private String message;
    ??? public String getMessage() {
    ??????? System.out.println("getMessage()=" + message);
    ??????? return message;
    ??? }

    ??? public void setMessage(String message) {
    ??????? System.out.println("setMessage(" + message + ")");
    ??????? this.message = message;
    ??? }
    }

    3、配置文件jboss-service.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <server>
    ??? <mbean code="example.mbean.HelloWorldService" name="www.chengang.com.cn:service=HelloWorld">
    ??????? <attribute name="Message">Hello World</attribute>
    ??? </mbean>
    </server>

    說明:

    l?code項(xiàng)指向MBean的實(shí)現(xiàn)類HelloWorldService
    l?name項(xiàng)是一個(gè)名稱,格式一般是:[說明性文字]:service=[類名]
    l?attribute是為屬性設(shè)置初始值,這樣當(dāng)JBOSS一加載HelloWorldService類時(shí),message屬性就有了一個(gè)初始值Hello World。注意Message的第一個(gè)字母必須是大寫。

    二、將實(shí)例部署到JBOSS

      在jboss-3.2.6\server\default\deploy目錄下創(chuàng)建一個(gè)hello.sar目錄,然后創(chuàng)建如下目錄文件結(jié)構(gòu):

    hello.sar
    |----example
    |?????? ???? |----mbean
    |?????????????????? ?|----HelloWorldService.class? (注意:是*.class,不是*.java)
    |??????????????????? |----HelloWorldServiceMBean.class
    |----META-INF
    ???????????? |----jboss-service.xml

    其他說明:

    l?也可以將hello.sar目錄用zip格式壓縮成一個(gè)同名的hello.sar文件,放到jboss-3.2.6\server\default\deploy目錄下。
    l?JBOSS支持熱部署,也就是說你在布置這個(gè)目錄時(shí)并不需要重啟JBOSS

    三、MBean的效果

    ?

    打開網(wǎng)址:http://127.0.0.1:8080/jmx-console/ ,出現(xiàn)下圖

    然后單擊“service=HelloWorld”項(xiàng)打開詳細(xì)頁面如下:



    將“
    HelloWorld”改成“Hello WorldChenGang”,再單擊“Apply Changes”應(yīng)用修改,得到如下效果:

    ?

    四、其他類如何使用Messag屬性

      現(xiàn)在我們可以通過一個(gè)自動提供的WEB頁面來設(shè)置Message屬性了,接下來的問題是:“在其他類中應(yīng)該如何得到Message的屬性值”。MBeanJBoss是只保留一個(gè)MBean的實(shí)例(單例模式?),也就是說問題轉(zhuǎn)成我們?nèi)绾稳ト〉眠@個(gè)唯一實(shí)例。例程如下:

    1、創(chuàng)建一個(gè)使用到Message屬性的類

    import org.jboss.mx.util.MBeanProxyExt;
    import org.jboss.mx.util.ObjectNameFactory;
    public class Client {
    ??? public void go() {
    ??????? HelloWorldServiceMBean mbean = (HelloWorldServiceMBean) MBeanProxyExt.create(HelloWorldServiceMBean.class, ObjectNameFactory.create(www.chengang.com.cn:service=HelloWorld));
    ????????String msg = mbean.getMessage();
    ??????? System.out.println("Client.go()=" + msg);
    ??? }
    }?

    注意:go方法里是三句。第一句比較長,它是根據(jù)jboss-service.xml文件中設(shè)置的MBean名稱,來取得此MBeanJBOSS中的實(shí)例。

    2、在Mbean中加一個(gè)相應(yīng)的調(diào)用Client.go的方法

     在HelloWorldServiceMBean接口中加入一句:

    void callGo();

    HelloWorldService類中加入現(xiàn)實(shí)方法:

    ??? public void callGo() {
    ??????? new Client().go();
    ??? }

    3、更新布署

    ?? 將三個(gè)類的class文件:Clien.classHelloWorldServiceMBean.classHelloWorldService.class,更新到JBOSShello.sar\example\mbean目錄下。然后重啟JBOSS

    4、查看效果

    ?? 打開JBOSS提供的MBean設(shè)置頁面,如下,發(fā)現(xiàn)多了一個(gè)callGo



    單擊
    callGo項(xiàng)后的invoke按鈕,得到如下的DOS輸出:

    ?

    五、其他說明

    l?本實(shí)例僅演示了一個(gè)Message屬性,你當(dāng)然可以在HelloWorldService中加入更多屬性,別忘了在HelloWorldServiceMBean接口也加入相應(yīng)的set/get方法。
    l?本實(shí)例的message屬性是String類型的,但JMX也支持其他的類型,甚至是XML信息。對于jboss-service.xml中的XML信息,這時(shí)屬性類型要求是org.w3c.dom.ElementJMX將它封裝成了一個(gè)XMLDOM對象。
    l?回顧一下,JMX也是將配置信息寫在了一個(gè)文件(jboss-service.xml文件)里嘛,相對于將配置文件寫到*.properties文件的方式,它似乎也沒什么新鮮的地方。但通過本章實(shí)例我們可以看到JMX的一些好處:我們不用寫代碼去讀配置文件的信息,而且JMX支持的屬性類型是多種多樣的(如上面說的org.w3c.dom.Element)。更重要的是JMX還提供了一整套的屬性之前互相訪問、互相調(diào)用的功能,這個(gè)HelloWorld實(shí)例所反映的只是冰山一角而已。

    六、參考資料:http://www.huihoo.com/java/jmx/jmx_base.html 

    posted on 2006-12-12 16:40 哼哼 閱讀(998) 評論(1)  編輯  收藏 所屬分類: JMX

    Feedback

    # re: 基于JBoss來寫MBean (轉(zhuǎn))[未登錄] 2009-06-06 13:33 菜鳥
    有沒有Eclipse的插件,可以直接開發(fā)JBoss的MBean  回復(fù)  更多評論
      

    主站蜘蛛池模板: 无码国模国产在线观看免费 | 亚洲熟女综合色一区二区三区 | 一本天堂ⅴ无码亚洲道久久| 69xx免费观看视频| 亚洲国产一区二区a毛片| 黄网站免费在线观看| 国产亚洲精品观看91在线| 中文字幕成人免费高清在线视频 | a毛片免费全部播放完整成| 亚洲精品国精品久久99热一| 最新亚洲成av人免费看| 久久精品国产亚洲| 100部毛片免费全部播放完整| 激情内射亚洲一区二区三区爱妻 | 久久久久久国产a免费观看黄色大片| 亚洲理论片在线中文字幕| 又粗又大又黑又长的免费视频| 亚洲一区在线免费观看| 午夜视频在线观看免费完整版| 精品亚洲视频在线| 国产国拍亚洲精品福利 | 亚洲AV无码久久精品成人| 精品免费tv久久久久久久| 亚洲黑人嫩小videos| 最近最新中文字幕完整版免费高清 | 亚洲av中文无码乱人伦在线观看| 免费a级毛片无码a∨性按摩| 国产精品玖玖美女张开腿让男人桶爽免费看| 国产偷国产偷亚洲清高动态图 | a级在线观看免费| 亚洲人成高清在线播放| 免费无码黄网站在线观看| 一级一级一片免费高清| 亚洲卡一卡2卡三卡4卡无卡三| 成人免费无码大片a毛片| 青青草国产免费国产是公开| 亚洲国产精品自在在线观看 | 亚洲成a人在线看天堂无码| 久久精品电影免费动漫| 亚洲精品自偷自拍无码| 中文字幕亚洲专区|