前面所有看效果都是通過Html網頁來看的。JDK5.0自帶了一個jmx客戶端,叫jconsole,位于c:\jdk\bin\jconsole.exe。我們來用用這個客戶端來連接Mbean Server。
一、vm參數方式
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、單擊“連接”
二、RMI方式
還是用jconsole,但方式變了。這里不需要象上面那樣修改Eclipse run的vm選項。
1、還是用第一篇的HelloAgent,加上一段代碼,啟動一個JMXConnectorServer服務
java 代碼
- 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.....");
-
-
- 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
三、總結
連接MBeanServer的方式除了Html、
JConsole,還有一些第三方的客戶端,比較有名的是MC4j,通過這些客戶端我們可以很容易去訪問MBean。這也就是我們為什么要用
JMX的其中一個原因:試想如果我自己搞一套標準,勢必要自己開發一個客戶端,那會是一個不小的工作量。