概述
在JBoss 6及JBoss 6之前的版本,JBoss使用JMX MBean架构,例如,JBoss 6中我们可以将MBean通过*-bean.xml,打包在sar包中,部署于JBoss。但在JBoss 7/WildFly中我们如何部署JMX MBean呢?本文给出一个简单步骤来完成这一需求。
JBoss 7/WildFly中 MBean部署需要依赖JBoss service,这就需要我们符合JBoss service的要求,MBean需要包括一系列生命周期相关的操作,例如create, start, stop, 以及destroy,这些操作被JBoss容器调运来通知MBean相关的事件发生。我们需要在MBean中添加这些方法。
部署TestMBean到JBoss 7/WildFly
我们通过如下四步部署TestMBean到JBoss 7/WildFly。
创建TestMBean接口
创建TestMBean接口如下:
package org.jboss.jmx.test;public interface TestMBean { public void setMessage(String message); public String getMessage();}
创建Test类实现TestMBean
创建Test类实现TestMBean,Test中我们需要添加start() a和stop()方法,如下:
package org.jboss.jmx.test;public class Test implements TestMBean { boolean flag = true; public String Message; public Test() { System.out.println(" TestMBean is activated...inside Test() constructor--setting default Message=Hello"); } public void setMessage(String Message) { System.out.println(" Server Watch Message is set to : " + Message); this.Message = Message; } public String getMessage() { System.out.println(" Server Watch Message is set to : " + Message); return this.Message; } public void start() throws Exception { System.out.println("Starting start() Test invoked"); Message = "JBoss"; } public void stop() throws Exception { System.out.println("Stopping stop() Test invoked"); }}
编译生成部署包
编译以上class到mbean-test.sar。示例代码位于:
我们可以使用中描述的方法下载,编译上传部署包。
添加jboss-service.xml到$YOUR_SAR/META-INF
添加jboss-service.xml到mbean-test.sar/META-INF,编辑jboss-service.xml,添加内容如下:
部署及测试JBoss
使用中描述的方法,部署mbean-test.sar到JBoss 7,启动JBoss 7过程我们可以发现如下输出日志:
14:56:25,370 INFO [stdout] (MSC service thread 1-6) TestMBean is activated...inside Test() constructor, Message: null14:56:25,374 INFO [stdout] (MSC service thread 1-1) Server Watch Message is set to : JBoss14:56:25,375 INFO [stdout] (MSC service thread 1-1) Starting start() Test invoked启动JBOSS_HOME/bin/jconsole,我们可以看到MyTestMBean位于test.testing下,如下图所示: