jmx(java management extension) 是jdk提供的为Java应用提供监控功能的一个标准,类似于jms等,在许多的由java编写的框架如es,tomcat,activiti中都引入了jmx进行应用监控。下面我就来写一个jmx的例子以供参考。
使用Jmx需要引入一个Jar包(jmxtools-1.2.1.jar),这个jar包不在jdk原生的jar包里面,需要另行下载,然后倒入到项目中去。这里提供一个下载地址
http://www.datanucleus.org/downloads/maven2/com/sun/jdmk/jmxtools/1.2.1/
下面就开始来实现一个jmx的demo
先创建一个接口TomcatUtilMBean
public interface TomcatUtilMBean {
void setServerName(String serverName);
String getServerName();
void setPort(int port);
int getPort();
String getTomcatInfo();
}
然后写一个实现类TomcatUtil
public class TomcatUtil implements TomcatUtilMBean {
public String serverName = "Catalina";
public int port = 8080;
@Override
public void setServerName(String serverName) {
this.serverName = serverName;
}
@Override
public String getServerName() {
return serverName;
}
@Override
public void setPort(int port) {
this.port = port;
}
@Override
public int getPort() {
return port;
}
@Override
public String getTomcatInfo() {
return "The Tomcat's name is "+ serverName +", port is " + port;
}
}
然后创建一个jmx的server
public class TomcatMonitor {
public static void main(String[] args) throws Exception {
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
TomcatUtilMBean tomcatUtilMBean = new TomcatUtil();
mBeanServer.registerMBean(tomcatUtilMBean, new ObjectName("myMBean:name=tomcatUtil"));
HtmlAdaptorServer htmlAdaptorServer = new HtmlAdaptorServer();
htmlAdaptorServer.setPort(8888);
mBeanServer.registerMBean(htmlAdaptorServer, new ObjectName("myMBean:name = htmlAdaptor,port=8888"));
htmlAdaptorServer.start();
}
}
启动后在浏览器访问http://localhost:8888 即可看到jmx的管理界面。如下