先创建个要管理的MBean
public interface HelloMBean { public String getName(); public void setName(String name); public void printHello(); public void printHello(String whoName); }
实现这个MBean
public class Hello implements HelloMBean { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public void printHello() { System.out.println("Hello World, " + name); } public void printHello(String toName) { System.out.println("Hello , " + toName); } }
1.用htmlAdaptor管理
* 因为用到htmlAdaptor,所以需要引入jmxtools.jar
创建一个adaptorServer
package com.jmx.no1; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; import javax.management.ObjectName; import com.sun.jdmk.comm.HtmlAdaptorServer; /** * @author Administrator * */ public class MyHtmlAdaptorServer { public static void main(String[] args) throws Exception { MBeanServer server=MBeanServerFactory.createMBeanServer(); ObjectName helloObj=new ObjectName("myapp:type=a,name=HelloWorld"); server.registerMBean(new Hello(), helloObj); HtmlAdaptorServer adaptor=new HtmlAdaptorServer(); ObjectName adapterObj=new ObjectName("myapp:name=htmlAdapter"); server.registerMBean(adaptor, adapterObj); adaptor.start(); } }
运行之后打开浏览器访问:http://localhost:8082/
就可以对暴露出来的方法进行操作
2.用jconsole进行管理
jconsole是jdk自带的管理工具
也写一个管理类
package com.jmx.no1; 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; /** * @author Administrator * */ public class JconsoleServer { public static void main(String[] args) throws Exception { MBeanServer server=MBeanServerFactory.createMBeanServer(); server.registerMBean(new Hello(), new ObjectName("myapp:type=aaa,name=Hello")); JMXServiceURL url=new JMXServiceURL("service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/server"); JMXConnectorServer cs=JMXConnectorServerFactory.newJMXConnectorServer(url, null, server); cs.start(); } }
运行前,先注册rmiregistry 9999
============
rmiregistry
功能说明:
rmiregistry 命令可在当前主机的指定端口上启动远程对象注册服务程序。
语法:
rmiregistry [port]
补充说明:
rmiregistry 命令在当前主机的指定 port 上创建并启动远程对象注册服务程序。如果省略 port,则注册服务程序将在 1099 端口上启动。rmiregistry 命令不产生任何输出而且一般在后台运行。远程对象注册服务程序是自举命名服务。主机上的 RMI 服务器将利用它将远程对象绑定到名字上。客户机即可查询远程对象并进行远程方法调用。注册服务程序一般用于定位应用程序需调用其方法的第一个远程对象。该对象反过来对各应用程序提供相应的支持,用于查找其它对象。
java.rmi.registry.LocateRegistry 类的方法可用于在某台主机或主机和端口上获取注册服务程序操作。java.rmi.Naming 类的基于 URL 的方法将对注册服务程序进行操作,并可用于查询远程对象、将简单(字符串)名称绑定到远程对象、将新名称重新绑定到远程对象(覆盖旧绑定)、取消远程对象的绑定以及列出绑定在注册服务程序上的 URL。
=================
cmd运行jconsole ,然后在jconsole的远程进程里输入service:jmx:rmi:///jndi/rmi://localhost:9999/server
连接上就可以在 MBean Tab页里进行管理了