自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于JBoss來寫MBean

開發(fā) 后端
本文向您介紹基于JBoss來寫MBean以及基于JBoss的MBean和基于SUN的MBean有什么不同?

用JDK自帶的JMX實現(xiàn)來寫的MBean,JMX的實現(xiàn)不獨SUN一家,JBoss也有自己的JMX實現(xiàn)。如果你使用JBoss來做WEB服務器,那么基于JBoss的實現(xiàn)來寫MBean,是一個不錯的選擇。象我們公司就是用JBoss的,因此所有MBean都是基于JBoss來寫的?;贘Boss的MBean和基于SUN的MBean有什么不同嗎?有一些不同之外,但絕大部份都一樣。

一、  HelloWorld實例

1、準備工作
JBOSS實現(xiàn)了JMX規(guī)范,這個實例是基于JBoss來實現(xiàn)的。請先去下載一個JBoss,我是JBoss-3.2.6,這個實例需要JBoss的兩個JAR包的支持:jboss-system-3.2.6.jar、jboss-jmx-3.2.6.jar,如果你和我一樣用Eclipse來開發(fā)(推薦),那么把這個兩個包加入到項目的庫引用中(加入到庫引用的方法參考前面兩章)。

2、程序代碼
假設我們有一個叫message的屬性要需要經(jīng)常進行改動配置的,那么我們就把它寫成一個MBean。

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

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

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

  1.   import org.jboss.system.ServiceMBeanSupport;     
  2.   public class HelloWorldService extends ServiceMBeanSupport  

implements HelloWorldServiceMBean {     

  1.       private String message;     
  2.       public String getMessage() {     
  3.           System.out.println("getMessage()=" + message);     
  4.           return message;     
  5.       }     
  6.       
  7.      
  8.          public void setMessage(String message) {     
  9.          System.out.println("setMessage(" + message + ")");     
  10.          this.message = message;     
  11.     }     
  12.  }     

3)、配置文件jboss-service.xml

  1.   xml version="1.0" encoding="UTF-8"?>    
  2.  <server>    
  3.      <mbean code="example.mbean.HelloWorldService" 

name="www.chengang.com.cn:service=HelloWorld">    

  1.          <attribute name="Message">Hello Worldattribute>    
  2.      mbean>    
  3.  server>    

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

二、將實例部署到JBOSS

在jboss-3.2.6\server\default\deploy目錄下創(chuàng)建一個hello.sar目錄,然后創(chuàng)建如下目錄文件結構:
hello.sar
|----example
|            |----mbean
|                    |----HelloWorldService.class (注意:是*.class,不是*.java)
|                    |----HelloWorldServiceMBean.class
|----META-INF
             |----jboss-service.xml

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

三、MBean的效果

后單擊“service=HelloWorld”項打開詳細頁面

將“HelloWorld”改成“Hello World,ChenGang”,再單擊“Apply Changes”應用修改

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

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

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

  1.   import org.jboss.mx.util.MBeanProxyExt;     
  2.  import org.jboss.mx.util.ObjectNameFactory;     
  3.  public class Client {     
  4.      public void go() {     
  5.          HelloWorldServiceMBean mbean = (HelloWorldServiceMBean)  MBeanProxyExt.create(HelloWorldServiceMBean.class, ObjectNameFactory.create(www.chengang.com.cn:service=HelloWorld));     
  6.          String msg = mbean.getMessage();     
  7.          System.out.println("Client.go()=" + msg);     
  8.      }     
  9.  }     


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

2、在Mbean中加一個相應的調用Client.go的方法
在HelloWorldServiceMBean接口中加入一句:

  1. void callGo();    
  2. ublic void callGo() {     
  3.       new Client().go();     
  4.  }    

3、更新布署
將三個類的class文件:Clien.class、HelloWorldServiceMBean.class、HelloWorldService.class,更新到JBOSS的hello.sar\example\mbean目錄下。然后重啟JBOSS。

4、查看效果
打開JBOSS提供的MBean設置頁面,發(fā)現(xiàn)多了一個callGo。
單擊callGo項后的invoke按鈕,得到DOS輸出

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

【編輯推薦】

  1. JBoss簡介告訴我們JBoss是什么
  2. 利用mod_jk整合Apache與JBoss
  3. Windows下JBoss配置詳解
  4. 在Ubuntu下安裝Jboss
  5. JBoss和GlassFish中部署RichFaces較容易成功
責任編輯:佚名 來源: JavaEye
相關推薦

2009-06-25 13:40:28

JSFJavaBean

2009-06-15 17:31:07

2009-06-12 13:40:25

JBoss下載JBoss安裝

2009-06-12 13:59:04

2009-06-18 15:15:35

JBoss的配置

2009-01-15 09:02:27

JMXJBossJMX監(jiān)控

2009-06-16 09:19:13

JBoss Seam

2009-06-16 13:48:58

JBoss概述

2009-06-17 17:02:22

2009-03-30 09:31:41

JBoss DevelJBossEclipse

2009-06-15 16:41:43

JBoss啟動

2009-06-17 09:40:01

JBoss的class

2009-06-15 12:59:09

JBoss配置

2009-06-16 11:39:17

JBoss端口修改

2009-06-17 08:51:26

Eclipse啟動JB

2009-06-12 14:12:18

JBoss配置MyEclipse

2011-12-05 13:52:00

PHP

2022-08-12 06:44:24

PythonJupyter

2009-06-26 17:37:37

JBOSS配置

2009-06-16 10:02:12

點贊
收藏

51CTO技術棧公眾號