一、简介
JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。主要用于管理和监控程序,本节以一个简单的例子理解怎样管理MBean。
二、准备工作
JMX有一套标准,SUN公司JDK提供了实现该套标准的JMX接口。基于JDK就可以开发出JMX代码了。
1、 安装JDK1.5
2、 代码中用到了HtmlAdaptorServer接口,所以需要引入jmxtools.jar包。
3、 开发环境:Eclipse + JDk1.5
三、代码实例
package com.muyu.jmx; public interface ConfigMBean { public String getConfigLocation(); public void printConfigLocation(); public void printConfigLocation(String configLocation); public void setConfigLocation(String i_ConfigLocation); }
package com.muyu.jmx; public class Config implements ConfigMBean { private String configLocation; public String getConfigLocation() { return configLocation; } public void printConfigLocation() { System.out.println(configLocation); } public void printConfigLocation(String i_ConfigLocation) { System.out.println(i_ConfigLocation); } public void setConfigLocation(String i_ConfigLocation) { this.configLocation = i_ConfigLocation; } }
package com.muyu.jmx; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; import javax.management.ObjectName; import com.sun.jdmk.comm.HtmlAdaptorServer; /** * this class is used for test. * * @author LuisFigo */ public class Server { public static void main(String[] args) { MBeanServer server = MBeanServerFactory.createMBeanServer(); ObjectName configName; try { configName = new ObjectName("LuisFigo:name=config"); Config config = new Config(); server.registerMBean(config, configName); ObjectName adapterName = new ObjectName("ConfigAgent:name=htmladapter,port=8000"); HtmlAdaptorServer adapter = new HtmlAdaptorServer(); adapter.setPort(8000); server.registerMBean(adapter, adapterName); adapter.start(); System.out.println("adapter start ... "); } catch (Exception e) { e.printStackTrace(); } } }
说明
先创建一个MBean服务容器,将configMBean和HtmlAdaptorServer注册进去,HtmlAdaptorServer其实也是一个代理,默认端口号为8082,我们在这设置为8000, Server运行过后,在浏览器里输入http://localhost:8000即可看到图1界面。点击LuisFigo域下的name=config进入图2,在最下面的文本框里输入helloworld,点击printConfigLocation进入图3显示执行成功的信息。观察Eclipse控制台里出现了helloworld,这说明已经调用了服务端config的相应方法。
四、 总结
从上面的例子中我们可以知道,通过web网页形式可以访问和控制服务端程序中的MBean了。现在如果把系统中的一些参数放在MBean里,我们就可以动态的修改或访问它。