用JDK自带的JMX实现来写的MBean,JMX的实现不独SUN一家,JBoss也有自己的JMX实现。如果你使用JBoss来做WEB服务器,那么基于JBoss的实现来写MBean,是一个不错的选择。象我们公司就是用JBoss的,因此所有MBean都是基于JBoss来写的。基于JBoss的MBean和基于SUN的MBean有什么不同吗?有一些不同之外,但绝大部份都一样。
一、 HelloWorld实例
1、准备工作
JBOSS实现了JMX规范,这个实例是基于JBoss来实现的。请先去下载一个JBoss,我是JBoss-3.2.6,这个实例需要JBoss的两个JAR包的支持:jboss-system-3.2.6.jar、jboss-jmx-3.2.6.jar,如果你和我一样用Eclipse来开发(推荐),那么把这个两个包加入到项目的库引用中(加入到库引用的方法参考前面两章)。
2、程序代码
假设我们有一个叫message的属性要需要经常进行改动配置的,那么我们就把它写成一个MBean。
1)、HelloWorldServiceMBean接口
在写MBean之前,我们先需要写一个MBean接口,接口里的方法都是属性的set/get方法。这个接口必须继承接口ServiceMBean。
java 代码
import org.jboss.system.ServiceMBean; public interface HelloWorldServiceMBean extends ServiceMBean { String getMessage(); void setMessage(String message); } |
2)、HelloWorldService实现类
然后写出HelloWorldServiceMBean接口的实现类HelloWorldService,这个实现类还必须继承ServiceMBeanSupport类。这种类再简单不过了,就是属性和相应的set/get方法,EJB中叫实体类、Hibernate中叫POJO。
java 代码
import org.jboss.system.ServiceMBeanSupport; private String message;
|
3)、配置文件jboss-service.xml
xml version="1.0" encoding="UTF-8"?> <attribute name="Message">Hello Worldattribute> |
说明:
◆code项指向MBean的实现类HelloWorldService
◆name项是一个名称,格式一般是:[说明性文字]:service=[类名]
◆attribute是为属性设置初始值,这样当JBOSS一加载HelloWorldService类时,message属性就有了一个初始值 Hello World。注意Message的第一个字母必须是大写。
二、将实例部署到JBOSS
在jboss-3.2.6serverdefaultdeploy目录下创建一个hello.sar目录,然后创建如下目录文件结构:
hello.sar |----example | |----mbean | |----HelloWorldService.class (注意:是*.class,不是*.java) | |----HelloWorldServiceMBean.class |----META-INF |----jboss-service.xml |
其他说明:
◆也可以将hello.sar目录用zip格式压缩成一个同名的hello.sar文件,放到jboss-3.2.6serverdefaultdeploy目录下。
◆JBOSS支持热部署,也就是说你在布置这个目录时并不需要重启JBOSS。
三、MBean的效果
后单击“service=HelloWorld”项打开详细页面
将“HelloWorld”改成“Hello World,ChenGang”,再单击“Apply Changes”应用修改