JMX是拿来做管理运行时对象用的,比如说系统中有很多配置文件,怎么才能在运行时改变这些配置文件的值呢?这就需要jmx,当然还有别的办法。
下面写个简单的helloworld,帮助理解
jmx最小的管理单元是MBean,下面写一个接口
public interface HelloWorldMBean {
public String getName();
public void setName(String name);
public void print();
}
默认情况下接口名为类名加上MBean。如HelloWorld类的接口就是HelloWorldMBean
对应的HelloWorld:
public class HelloWorld implements HelloWorldMBean {
private String name = "";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void print() {
System.out.println("Hello, " + name + "!!");
}
}
这样dMBean就可以了。然后就是要把他注册到MBeanServer上去。
public class HelloAgent {
private MBeanServer mbs = null;
public HelloAgent() {
mbs = MBeanServerFactory.createMBeanServer();
HtmlAdaptorServer adapter = new HtmlAdaptorServer();
HelloWorld hw = new HelloWorld();
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(9999);
mbs.registerMBean(adapter, adapterName);
adapter.start();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
System.out.println("HelloAgent is running");
new HelloAgent();
}
}
运行这个类,然后在浏览器中打开http://localhost:9999/
出现了很多神奇的东西。哈哈,自己去点点就能理解这个jmx是什么意思了。
附件中有个包jdmkrt,是运行上面程序必须的,不然你就不能在浏览器中看到这个效果了哈哈