zoukankan      html  css  js  c++  java
  • 利用Java内置的API开发JMX功能

    一、什么是JMX

          JMS是一种Java规范,定义了如何管理一个软件系统(或应用程序)的规范。 对于一个简单的应用程序,该程序本身不需要被管理。但如果是开发的一个复杂系统(如一个电商平台、一个企业内部管理系统),则该系统本身也需要被管理,如需要了解这个软件的运行情况,比如某些状态是否正常、当前登录用户数,还有可能需要动态的调整系统的某些参数,如数据库链接池的大小、某些缓存的大小。

      JMS就是定义了这样的一套规范,有很多针对该规范的实现框架(如JBoss),SUN自己也对该规范有了一套实现,并且从JDK1.5开始,实现的核心jar包内置到了jre中,不需要单独下载jar包,只是一些外围的包还需单独下载。

         利用JMX规范,以及相应的实现框架,可以很方便的为一个复杂的应用系统建立一个管理系统。实际上如Tomcat、weblogic、JBOSS等框架服务器系统,本身就提供了JMX服务。利用这些框架开发的系统天然就能支持JMX。

      使用JMX还有一个很大的好处是,甚至不需要开发自己的界面。我们知道,如果自己开发一个管理软件,肯定需要开发相关的界面(不管是WEB的还是GUI的),而开发界面的工作量可不小。而JMX因为是标准的规范,如果一个应用系统通过JMX来实现被管理,直接就能通过通用的管理软件或内置的html页面来访问操作。

      本文介绍如何在一个普通的应用程序中来通过JMX被管理.

    二、JMX程序开发的基本流程

    1、一个系统要被管理,首先需要抽象成一个或多个被管理对象,在JMX规范中就是一个MBean。一个MBean就是一个普通的java类,只是需要遵循相关的命名规范。实现一个被管理对象(MBean),需要定义一个java接口(暴露该对象可被访问和操作的信息),以及一个该接口的实现类。根据JMX的规范要求,接口的命名必须是实现类的名字后加MBean。

    2、实现的MBean需要注册到MBean服务器上。

    3、通过界面或代码访问这些MBean。

    三、例子说明

    1、定义MBean接口

    public interface DemoMBean {
        public String getMsg();
    
        public void setMsg(String msg);
    
        public void showMsg();
    
    }

    注意,接口名必须以MBean结尾

    2、定义MBean的实现类

    public class Demo implements DemoMBean {
        private String msg;
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        public void showMsg() {
            System.out.println("Hello World, " + msg);
        }
    
    }

    注意,类名必须是 接口名除去后缀MBean。在这个例子中必须是Demo。

    3、注册Mbean

    public class Agent {
        public static void main(String[] args) throws Exception {
            MBeanServer server = MBeanServerFactory.createMBeanServer();
            
            //创建MBean并注册
            server.registerMBean(new Demo(), new ObjectName("mybean:name=xxx"));
    
            //创建一个web适配器服务器,表示我们MBean服务通过web形式来提供给用户管理.
            //该web server本身也是一个MBean,也需要被注册. 参数是web服务器的端口号,默认是8082
            HtmlAdaptorServer htmlServer = new HtmlAdaptorServer(9999);
            server.registerMBean(htmlServer, new ObjectName("Agent:name=htmlServer"));
            
            //启动web服务器,这样浏览器通过 http://localhost:9999/ 就可以访问和操作这些Mbean
            htmlServer.start();
    
        }
    
    }

    运行该程序后,在浏览器输入 http://localhost:9999/ ,就可以看到定义的MBean,并通过页面提供的界面对MBean进行操作。

    四、小结

    文本介绍了一个最简单的JMX例子。但却基本涵盖了JMX的核心内容。JMX的核心就是将要被管理的信息封装成一个个的MBean对象。

    然后将这些对象发布和注册到MBean服务器上。 这样用户就可以通过相关的界面或api方式去访问这些MBean,就可以通过MBean接口定义的相关方法获取相关的信息,或者执行相关的动作。

  • 相关阅读:
    今天想写东东
    [BTS]Event ID: 5803 错误处理办法
    微软技术能力测试工具V0.1试用
    PMI,PMBOK,PMP,Input,Output,Update
    [BTS]5719, 5753错误处理?
    向您推荐Groove BizTalk Workspace!
    [BTS]Adapter Pack调用SAP RFC接口时间格式出错解决办法
    [BTS]BizTalk学习之Functoid篇(ID CrossReferences)
    健身减肥计划
    [BTS] Event ID 5740
  • 原文地址:https://www.cnblogs.com/51kata/p/5163320.html
Copyright © 2011-2022 走看看