JMX代码入门(一)

package com.fanshadoop;
/**
 * 
 * standard MBean是通过接口定义的,且接口名称的后缀为"MBean"
 * 1)get方法定义了MBean的成员变量是可读权限
 * 2)set方法定义了MBean的成员变量是可写权限
 */
public interface HelloWorldMBean {
	public void setGreeting( String greeting );
	public String getGreeting();
	public void printGreeting();
}
package com.fanshadoop;
public class HelloWorld implements HelloWorldMBean {
	private String greeting = null;
	public HelloWorld() {
		this.greeting = "Hello World! I am a Standard MBean";
	}
	public HelloWorld(String greeting) {
		this.greeting = greeting;
	}
	public void setGreeting(String greeting) {
		this.greeting = greeting;
	}
	public String getGreeting() {
		return greeting;
	}
	public void printGreeting() {
		System.out.println(greeting);
	}
}

package com.fanshadoop;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import com.sun.jdmk.comm.HtmlAdaptorServer;
/**
 * JMX agents是JMX代理层中的组件,是MBean的容器
 * 1)创建了MBeanServer,MBean的容器
 * 2)创建了HTML适配器,处理来自HTML客户端的链接
 * 3)注册HelloWorld的实例
 */
public class HelloAgent {
	private MBeanServer mbs = null;
	public HelloAgent() {
		/*
		 * MBean server是一个用来包含和管理JMX MBean的Java对象,
		 * MBean server是一个标准的JMX类,它是JMX agents的核心。
		 * MBeanServerFactory可以管理多个MBeanSever实例
		 * 这里createMBeanServer方法的参数为一组MBean的domain,domain唯一区分其他的MBean server
		 * 如果HelloAgent已经存在,则会已经创建的MBeansever
		 */
		mbs = MBeanServerFactory.createMBeanServer("HelloAgent");		
		/*
		 *agent通过构造协议适配器和连接器,向管理application开放MBean 
		 */
		HtmlAdaptorServer adapter = new HtmlAdaptorServer();
		HelloWorld hw = new HelloWorld();
		/*
		 * ObjectName类为MBean提供了一个命名空间,它由两部分组成
		 * 1)domain name(与MBean server的domain一致)
		 * 2)key=value属性列表,用来标识MBean,为MBean提供信息
		 * 可以提供诸如name,port,location和purpose等属性,属性以逗号分割,且key=value属性列表是唯一的
		 */
		ObjectName adapterName = null;
		ObjectName helloWorldName = null;
		try {
			helloWorldName = new ObjectName("HelloAgent:name=helloWorld1");
			mbs.registerMBean(hw, helloWorldName);
			adapterName = new ObjectName(
					"HelloAgent:name=htmladapter,port=9092");
			 adapter.setPort( 9092 );
			 mbs.registerMBean( adapter, adapterName );
			 adapter.start();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String args[]) {
		System.out.println("HelloAgent is running");
		HelloAgent agent = new HelloAgent();
	}
}


你可能感兴趣的:(JMX代码入门(一))