自从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的插件。



