JMX

自从Java15开始,Java Management Extensions(JMX)框架作为一个用户友好的基础架构方案得到广泛的采纳,用以帮助控制远程或本地的Java应用程序。自从JMX引入了MBeans的概念,它彻底革新了Java应用程序的控制体系,将实时管理引入到了这个领域。

JMX可以允许你在远程(可信的内部网络或使用ssl)访问一个运行中的java程序,可以为这些应用程序初始化一些重要的数据(比如,重置用户登录统计系统中计数器的值),或者进行一些非常重要的控制功能。

开启JMX

启动JDK的同时开启JMX

/opt/jdk/java-se-8u42-ri/bin/java -Dcom.sun.management.jmxremote \
	  -Dcom.sun.management.jmxremote.port=9010 \
	  -Dcom.sun.management.jmxremote.local.only=false \
	  -Dcom.sun.management.jmxremote.authenticate=false \
	  -Dcom.sun.management.jmxremote.ssl=false \
	  -jar mm-jdk8-full.jar

Tomcat下开启JMX

set CATALINA_OPTS=-Dcom.sun.management.jmxremote
set CATALINA_OPTS=%CATALINA_OPTS% -Dcom.sun.management.jmxremote.port=8008
set CATALINA_OPTS=%CATALINA_OPTS% -Dcom.sun.management.jmxremote.ssl=false
set CATALINA_OPTS=%CATALINA_OPTS% -Dcom.sun.management.jmxremote.authenticate=false

JMX的MBean的简单示例

1、创建接口HelloBean

package com.dokbok.annomvc.jmx;

public interface HelloMBean {
    void setMessage(String message);
    String getMessage();
    void sayHello();
}

2、实现HelloBean

package com.dokbok.annomvc.jmx;

public class Hello implements HelloMBean {
    private String message = null;

    @Override
    public void setMessage(String message) {
        this.message = message;
    }

    @Override
    public String getMessage() {
        return this.message;
    }

    @Override
    public void sayHello() {
        System.out.println(message);
    }
}

3、测试类SimpleAgent

package com.dokbok.annomvc.jmx;

public class Hello implements HelloMBean {
    private String message = null;

    @Override
    public void setMessage(String message) {
        this.message = message;
    }

    @Override
    public String getMessage() {
        return this.message;
    }

    @Override
    public void sayHello() {
        System.out.println(message);
    }
}

4、使用visualVM

需要安装VisualVM-MBeans的插件。

我们看到实验结果,可以通JMX向正在运行的Java应用程序传入了变量。在调试或测试的时候,我们可以通过JMX来初始化数据。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注