电子商务网站购物流程图,ps做网站显示内容参考,番禺制作网站设计,国外网站设计师前面都是用JDK自带的JMX实现来写的MBean#xff0c;JMX的实现不独SUN一家#xff0c;JBOSS也有自己的JMX实现。如果你使用JBOSS来做WEB服务器#xff0c;那么基于JBOSS的实现来写MBean#xff0c;是一个不错的选择。象我们公司就是用JBOSS的#xff0c;因此所有MBean都是基… 前面都是用JDK自带的JMX实现来写的MBeanJMX的实现不独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.jar、jboss-jmx-3.2.6.jar如果你和我一样用Eclipse来开发推荐那么把这个两个包加入到项目的库引用中加入到库引用的方法参考前面两章。 2、程序代码 假设我们有一个叫message的属性要需要经常进行改动配置的那么我们就把它写成一个MBean。 1、HelloWorldServiceMBean接口 在写MBean之前我们先需要写一个MBean接口接口里的方法都是属性的set/get方法。这个接口必须继承接口ServiceMBean。 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。 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 version1.0 encodingUTF-8?server mbean codeexample.mbean.HelloWorldService namewww.chengang.com.cn:serviceHelloWorld attribute nameMessageHello World/attribute /mbean/server 说明 l code项指向MBean的实现类HelloWorldServicel 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/ 出现下图 然后单击“serviceHelloWorld”项打开详细页面如下 将“HelloWorld”改成“Hello WorldChenGang”再单击“Apply Changes”应用修改得到如下效果 四、其他类如何使用Messag属性 现在我们可以通过一个自动提供的WEB页面来设置Message属性了接下来的问题是“在其他类中应该如何得到Message的属性值”。MBean在JBoss是只保留一个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:serviceHelloWorld));String msg mbean.getMessage();System.out.println(Client.go() msg);}} 注意go方法里是三句。第一句比较长它是根据jboss-service.xml文件中设置的MBean名称来取得此MBean在JBOSS中的实例。 2、在Mbean中加一个相应的调用Client.go的方法 在HelloWorldServiceMBean接口中加入一句 void callGo(); 在HelloWorldService类中加入现实方法 public void callGo() { new Client().go(); } 3、更新布署 将三个类的class文件Clien.class、HelloWorldServiceMBean.class、HelloWorldService.class更新到JBOSS的hello.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将它封装成了一个XML的DOM对象。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