日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[JMX一步步来] 9、基于JBoss来写MBean

發布時間:2023/12/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [JMX一步步来] 9、基于JBoss来写MBean 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前面都是用JDK自帶的JMX實現來寫的MBean,JMX的實現不獨SUN一家,JBOSS也有自己的JMX實現。如果你使用JBOSS來做WEB服務器,那么基于JBOSS的實現來寫MBean,是一個不錯的選擇。象我們公司就是用JBOSS的,因此所有MBean都是基于JBoss來寫的。基于JBoss的MBean和基于SUN的MBean有什么不同嗎?有一些不同之外,但絕大部份都一樣。 下面是我最早發的一篇關于JMX的文章,是我對公司所做項目的筆記,它上面的JMX例子就是基于JBOSS的。博客搬了幾次家,文章刪的刪丟的丟,但這篇文章還保留著,簡單修改一下,再帖上吧。

一、??HelloWorld實例

1、準備工作

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

2、程序代碼

  假設我們有一個叫message的屬性要需要經常進行改動配置的,那么我們就把它寫成一個MBean

1HelloWorldServiceMBean接口

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


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

2HelloWorldService實現類

  然后寫出HelloWorldServiceMBean接口的實現類HelloWorldService,這個實現類還必須繼承ServiceMBeanSupport類。這種類再簡單不過了,就是屬性和相應的set/get方法,EJB中叫實體類、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項指向MBean的實現類HelloWorldService
l?name項是一個名稱,格式一般是:[說明性文字]:service=[類名]
l?attribute是為屬性設置初始值,這樣當JBOSS一加載HelloWorldService類時,message屬性就有了一個初始值Hello World。注意Message的第一個字母必須是大寫。

二、將實例部署到JBOSS

  在jboss-3.2.6\server\default\deploy目錄下創建一個hello.sar目錄,然后創建如下目錄文件結構:

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

其他說明:

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

三、MBean的效果

打開網址:http://127.0.0.1:8080/jmx-console/ ,出現下圖

然后單擊“service=HelloWorld”項打開詳細頁面如下:

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

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

  現在我們可以通過一個自動提供的WEB頁面來設置Message屬性了,接下來的問題是:“在其他類中應該如何得到Message的屬性值”。MBeanJBoss是只保留一個MBean的實例(單例模式?),也就是說問題轉成我們如何去取得這個唯一實例。例程如下:

1、創建一個使用到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方法里是三句。第一句比較長,它是根據jboss-service.xml文件中設置的MBean名稱,來取得此MBeanJBOSS中的實例。

2、在Mbean中加一個相應的調用Client.go的方法

 在HelloWorldServiceMBean接口中加入一句:

void callGo();

HelloWorldService類中加入現實方法:

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

3、更新布署

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

4、查看效果

?? 打開JBOSS提供的MBean設置頁面,如下,發現多了一個callGo

單擊callGo項后的invoke按鈕,得到如下的DOS輸出:

五、其他說明

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

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

七、作者簡介

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

總結

以上是生活随笔為你收集整理的[JMX一步步来] 9、基于JBoss来写MBean的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 激情欧美网站 | 日韩av在线一区二区三区 | 26uuu国产精品视频 | 亚洲av中文无码乱人伦在线视色 | 欧美日韩理论 | 亚洲激情五月 | 性色在线视频 | 美女网站av | 性生交大片免费看3p | 伊人操 | 一区二区三区四区视频在线观看 | 午夜两性视频 | 国产美女在线精品 | jizzjizz在线观看 | 性久久久久 | 中文字幕 成人 | 精品久久久久一区 | 国产噜噜噜噜久久久久久久久 | 亚洲一区二区三区综合 | 奇米四色网 | 国产性自拍 | 蜜臀va| 日日摸夜夜添夜夜添高潮喷水 | 久久国产中文字幕 | 69久久久久 | 欧美美女一区二区三区 | 中文精品在线观看 | 亚洲av无码一区二区三区四区 | 国产精品免费无遮挡无码永久视频 | 骚虎免费视频 | 哪里可以免费看av | 伦在线| 国产999精品视频 | 男女洗澡互摸私密部位视频 | 欧美精品亚洲 | 麻豆做爰免费观看 | 久久国产视频网 | 少妇野外性xx老女人野外性xx | 玩偶姐姐在线看 | 欧美福利视频在线 | 久久狠狠干 | 欧美一级做a爰片久久高潮 久热国产精品视频 | 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 国产精品又黄又爽又色无遮挡 | 天堂在线观看免费视频 | 88久久精品无码一区二区毛片 | 国产精品高清无码在线观看 | 久久久久国产一区二区 | 91精品国产一区二区三区蜜臀 | 久久网一区二区 | 欧美国产免费 | 亚洲美女视频在线观看 | 日本香蕉视频 | 成人午夜精品福利免费 | 欧美一区二区成人 | 日本在线一 | 夜夜操av | 香蕉视频性| 老熟妇一区二区三区啪啪 | 网站免费黄色 | 久久精品国产成人av | 亚洲美免无码中文字幕在线 | 91精品人妻一区二区三区蜜桃2 | 国产va在线观看 | 国产乱淫av麻豆国产免费 | 理论av| 91欧美一区二区 | 一区二区色 | 精东影业一区二区三区 | 欧美三级在线视频 | 色播日韩| 北岛玲在线| 99婷婷| 国产新婚疯狂做爰视频 | 国产高清av| 丰满大爆乳波霸奶 | 国产欧美在线 | 精品人伦一区二区三电影 | 免费国产高清 | 蜜桃成熟时李丽珍在线观看 | 日韩r级电影在线观看 | 看看黄色片 | 女生下面流水视频 | 织田真子作品 | 日本成人动漫在线观看 | 成人涩涩软件 | 日韩中文字幕影院 | 欧美浪妇xxxx高跟鞋交 | 国产伦精品一区二区三区千人斩 | 97人人人| 午夜福利三级理论电影 | 日本一区二区三区四区在线观看 | 国产二区精品视频 | av网站在线观看免费 | 欧美性猛交xxxx免费看久久久 | 国产一级片免费看 | 日韩精品在线一区二区三区 | 国产精品一区二区麻豆 | 中文字幕一区二区不卡 |