JBoss 系列六十四:部署JMX MBean到JBoss 7/WildFly

时间:2021-08-19 18:05:15

概述

在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。示例代码位于:https://github.com/kylinsoong/wildfly-architecture/tree/master/mbean

我们可以使用软件安装及资料下载中描述的方法下载,编译上传部署包。

添加jboss-service.xml到$YOUR_SAR/META-INF

添加jboss-service.xml到mbean-test.sar/META-INF,编辑jboss-service.xml,添加内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<server xmlns="urn:jboss:service:7.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:jboss:service:7.0 jboss-service_7_0.xsd">
    <mbean code="org.jboss.jmx.test.Test" name="test.testing:service=MyTestMBean">
         <attribute name="Message">JBoss</attribute>
    </mbean>
</server>

部署及测试

使用使用4种方式部署应用到JBoss7/WildFly中描述的方法,部署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: null
14:56:25,374 INFO  [stdout] (MSC service thread 1-1)  Server Watch Message is set to : JBoss
14:56:25,375 INFO  [stdout] (MSC service thread 1-1)  Starting start() Test invoked

启动JBOSS_HOME/bin/jconsole,我们可以看到MyTestMBean位于test.testing下,如下图所示:

JBoss 系列六十四:部署JMX MBean到JBoss 7/WildFly