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的管理界面。如下