1、JMX产生的理由:对超大型的超市,比如说沃尔码, 每天会有大量的不同产品的进货、出货动作,那超市是如何来管理这么大量的千差万别的物品的呢? 答案是:抽象为条形码。 同样, 在Java中,会有各种各样的对象的创建、销毁等动作,这些内容不应该是“黑洞”, 而应该监控起来,于是JMX诞生了。JMX将千差万别的对象贴上标签,具备抽象的相同属性的对象则可以进行统一模式的度量。
2、实例:
步骤一:定义MBean的接口
- package standardbeans;
- public interface HelloMBean {
- public String getName();
- public void setName(String name);
- public void printHello();
- public void printHello(String whoName);
- }
步骤二:MBean的实现类
- package standardbeans;
- 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 whoName) {
- System.out.println("Hello , " + whoName);
- }
- }
步骤三:MBean的启动
- package standardbeans;
- import javax.management.MBeanServer;
- import javax.management.MBeanServerFactory;
- import javax.management.ObjectName;
- 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("demo01:name=HelloWorld");
- server.registerMBean(new Hello(), helloName);
- ObjectName adapterName = new ObjectName(
- "HelloAgent:name=htmladapter,port=8089");
- HtmlAdaptorServer adapter = new HtmlAdaptorServer();
- adapter.setPort(8089);
- server.registerMBean(adapter, adapterName);
- adapter.start();
- System.out.println("start.....");
- }
- }
说明:
* 先创建了一个MBeanServer,用来做MBean的容器
* 将Hello这个类注入到MBeanServer中,注入需要创建一个ObjectName类
* 创建一个AdaptorServer,这个类将决定MBean的管理界面,这里用最普通的Html型界面。AdaptorServer其实也是一个MBean。
* chengang:name=HelloWorld的名字是有一定规则的,格式为:“域名:name=MBean名称”,域名和MBean名称都可以任意取。
4、运行HelloAgent,然后打开网页:http://localhost:8089/,单击“name=HelloWorld”链接进入
【注意】
1、加入jmxtool.jar,下载地址:http://www.findjar.com/jar/mule/dependencies/jmxri/jmxtools/1.2/jmxtools-1.2.jar.html;jsessionid=41165C48DEBD02D487DC574561BBD10D
或者
- <dependency>
- <groupId>com.alibaba.external</groupId>
- <artifactId>jmx.tools</artifactId>
- <version>0.0.0</version>
- </dependency>
2、MBeanServer选用
注册到平台则选用:
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
注册到html页面中操作,则使用:
HtmlAdaptorServer adapter = new HtmlAdaptorServer();
本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/546014,如需转载请自行联系原作者