前面所有看效果都是通過Html網(wǎng)頁來看的。JDK5.0自帶了一個jmx客戶端,叫jconsole,位于c:\jdk\bin\jconsole.exe。我們來用用這個客戶端來連接Mbean Server。
一、vm參數(shù)方式
1、還是用第一篇的那個HelloAgent,修改HelloAgent,將第一句:
MBeanServer server = MBeanServerFactory.createMBeanServer();
改為:MBeanServer server = ManagementFactory.getPlatformMBeanServer();
注:ManagementFactory的全路徑為:java.lang.management.ManagementFactory
2、修改Eclipse的run選項,把“-Dcom.sun.management.jmxremote=HelloAgent”這一句加入到run選項中,修改如下圖:
3、運行HelloAgent,然后在Dos窗口輸入“jconsole”來啟到JConsole,得到如下界面。
4、單擊“連接”,進(jìn)入以下界面:
二、RMI方式
還是用jconsole,但方式變了。這里不需要象上面那樣修改Eclipse run的vm選項。
1、還是用第一篇的HelloAgent,加上一段代碼,啟動一個JMXConnectorServer服務(wù)
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import javax.management.remote.JMXConnectorServer;
import javax.management.remote.JMXConnectorServerFactory;
import javax.management.remote.JMXServiceURL;
import com.sun.jdmk.comm.HtmlAdaptorServer;
public class HelloAgent {
public static void main(String args[]) throws Exception {
MBeanServer server = MBeanServerFactory.createMBeanServer();
ObjectName helloName = new ObjectName("chengang:name=HelloWorld");
Hello hello = new Hello();
server.registerMBean(hello, helloName);
ObjectName adapterName = new ObjectName("HelloAgent:name=htmladapter,port=8082");
HtmlAdaptorServer adapter = new HtmlAdaptorServer();
server.registerMBean(adapter, adapterName);
adapter.start();
System.out.println("start.....");
// Create an RMI connector and start it
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server");
JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, server);
cs.start();
System.out.println("rmi start.....");
}
}
2、在Dos運行一個命令:rmiregistry 9999
3、運行HelloAgent,然后再在dos下運行命令jconsole,得到如下界面,輸入service:jmx:rmi:///jndi/rmi://localhost:9999/server
三、總結(jié)
連接MBeanServer的方式除了Html、JConsole,還有一些第三方的客戶端,比較有名的是MC4j,通過這些客戶端我們可以很容易去訪問MBean。這也就是我們?yōu)槭裁匆肑MX的其中一個原因:試想如果我自己搞一套標(biāo)準(zhǔn),勢必要自己開發(fā)一個客戶端,那會是一個不小的工作量。