jmx使用简介
- 2016-06-16 22:01:00
- admin
- 原创 2394
一、jmx是什么
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架(有多种实现)。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
SUN的默认实现在rt.jar里面,但jmxtools.jar需要下载:jmx-1_2_1-ri.zip
二、jmx示例
创建一个MBean,接口名后面必须跟上MBean:
public interface HelloMBean {
public String getName();
public void setName(String name);
public void printHello();
public void printHello(String whoName);
}
创建MBean的实现:
public class Hello implements HelloMBean {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void printHello() {
System.out.println("Hello World, " + name);
}
public void printHello(String whoName) {
System.out.println("Hello , " + whoName);
}
}
创建一个agent类,用于管理MBean:
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import com.sun.jdmk.comm.HtmlAdaptorServer;
public class HelloAgent {
public static void main(String[] args) throws Exception {
MBeanServer server = MBeanServerFactory.createMBeanServer();
ObjectName helloName = new ObjectName("chengang:name=HelloWorld");
server.registerMBean(new Hello(), helloName);
ObjectName adapterName = new ObjectName("HelloAgent:name=htmladapter,port=8082");
HtmlAdaptorServer adapter = new HtmlAdaptorServer();
server.registerMBean(adapter, adapterName);
adapter.start();
System.out.println("start.....");
}
}
源码下载:
HelloMBean.java Hello.java HelloAgent.java
示例说明:
1 读属性使用is或者get,写属性使用set。
2 将Hello和HtmlAdaptorServer(提供web输出)的实例注入到MBeanServer。
3 MBean注入名称的格式为:“域名:name=MBean名称”,域名和MBean名称都可以任意取。
描述:DomainName:property=value[,property2=value2]*
域名:JMImplementation等特殊值不能使用,多个MBean可以使用同一域名。
4 推荐使用标准MBean,不推荐使用动态MBean。(动态MBean构造起来麻烦)
5 createMBeanServer可以指定参数,用于设置默认域名。
6 HtmlAdaptorServer可以设置端口。
7 访问http://localhost:8082
三、HtmlAdaptorServer功能
1 列出所有MBean,可以使用域名或者key-value-pairs过滤(pairs不排序)。
2 创建MBean、删除MBean、显示MBean构造函数。
3 MBean查看、设置、远程调用(Reload用于自动刷新)。