JMX1:hello world

#java #tech #jmx

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就完成了.