JMX(Java Management Extensions,Java管理扩展)
JMX官网
概念性的东西在官网上有解释,这里就不多解释,直奔主题.
先写一个简单的测试类,MyTest.java
public class MyTest implements MyTestMBean {
private String name = "world";
@Override
public String getName() {
return this.name;
}
@Override
public void setName(String name) {
this.name = name;
}
@Override
public String sayHello(String name) {
return "hello," + name;
}
@Override
public void changeName(String name) {
setName(name);
}
}
把想暴露的方法封装成一个接口
注意:
- 接口的名称必须是类名+MBean,这里就是MyTestMBean.java
- 修饰符必须是public,interface的默认public abstract 是不行的.
public interface MyTestMBean {
String getName();
void setName(String name);
String sayHello(String name);
void changeName(String name);
}
写个测试类试试:Main.java
public class Main {
public static void main(String args[]) throws Exception {
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
// 包名加类名 创建一个ObjectName
ObjectName name = new ObjectName("name.chengchao:type=MyTest");
MyTest mbean = new MyTest();
// 注册MBean
mBeanServer.registerMBean(mbean, name);
System.out.println("started...");
Thread.sleep(Long.MAX_VALUE);
}
}
打开jconsole
可以看到:yTest下面有"属性"(pojo)和"操作"
点点看,还能执行方法,是不是很神奇啊.到这里一个mbean的helloworld就完成了.