`
xuyuanshuaaa
  • 浏览: 387703 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

jmx介绍

 
阅读更多
"JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理"
举一个应用实例:在一个系统中常常会有一些配置信息,比如服务的IP地址,端口号什么的,那么如何来写这些代码呢?

   1. 程序初哥一般是写死在程序里,到要改变时就去改程序,然后再编译发布;
   2. 程序熟手则一般把这些信息写在一个配置文件里(JAVA一般都是*.properties文件),到要改变时只要改配置文件,但还是重新启动系统,以便读取配置文件里的新值;
   3. 程序好手则会写一个段代码,把配置值缓存起来,系统在读值的时候,先看看配置文件有没有更动。如有更改则重读一遍,否则从缓存里读取值
   4. 程序高手则懂得取物为我所用,用JMX!把配置属性集中在一个类,然后写一个叫MBean的东东,再配置一下就轻松搞定了。而且JMX自动提供了一个WEB页面来给你来改变这些配置信息。

JMX中MBean有DynamicMBean和StandardMBean两类,前者动态组装一个监控对象,较为复杂,但更为灵活,不需要监控类继承*MBean接口,后者简单。
架构图如下:

1.建立一个需要被JMX管理的类Hello
Java代码

   
package bcndly.test.jmx;   
      
    public class Hello implements HelloMBean {   
           
        private String name;   
      
        public String getName() {   
            return name;   
        }   
      
        public void printHello() {   
            System.out.println("Hello, " + name);   
        }   
      
        public void printHello(String theName) {   
            System.out.println("Hello, " + theName);   
        }   
      
        public void setName(String name) {   
            this.name = name;   
        }   
      
    }  




2.建立Hello类的MBean接口,接口名必须是要管理的类名+MBean
Java代码 复制代码

  
 package bcndly.test.jmx;   
      
    public interface HelloMBean {   
           
        public String getName();   
      
        public void setName(String name);   
      
        public void printHello();   
      
        public void printHello(String theName);   
    }  



3.创建一个Agent类(通过html-adapter方式)
Java代码 复制代码

  
 package bcndly.test.jmx;   
      
    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("bcndyl:name=HelloWorld");   
            server.registerMBean(new Hello(), helloName);   
            ObjectName adapterName = new ObjectName("HelloAgent:name=htmladapter,port=8091");   
            HtmlAdaptorServer adapter = new HtmlAdaptorServer();   
            adapter.setPort(8091);
            server.registerMBean(adapter, adapterName);   
            adapter.start();   
            System.out.println("start.....");   
        }   
      
    }  



说明:

    HtmlAdaptorServer在jmxtools.jar包中,需要到SUN网站下载JMX 1.2.1 Reference Implementation
    MBeanServer是一个包含所有注册MBean的仓库.它是JMX代理层的核心.JMX1.0规范提供一个接口叫 javax.management.MBeanServer. 所有管理的在MBean操作通过MBeanServer执行.使用MBeanServer实例,你能够管理所有MBean.每一个MBean具有一个唯一标志,叫ObjectName.
    ObjectName (javax.management.ObjectName)是一个类,唯一标志一个在MBeanServer的MBean.这个对象名称用于管理应用程序来标志MBean以便操作能够在适当的MBean上被调用.一个对象名称包含两部分:域名称和没有经过排序的一个或者多个关键属性集,语法:[domain name]:property=value[,property=value]
    AdaptorServer,这个类将决定MBean的管理界面,这里用最普通的Html型界面。AdaptorServer其实也是一个MBean
    运行HelloAgent,打开IE输入http://localhost:8091就可以看到注册的MBean,在控制台看printHello的输出结果
3.创建一个Agent类(通过rmi-connector方式)
public class HelloAgent {   
  
    public static void main(String[] args) throws Exception {   
    	MBeanServer mbs = MBeanServerFactory.createMBeanServer("RMIAgent");
    	RmiConnectorServer connector = new RmiConnectorServer();
        ObjectName connectorName = null;
        try {
            connectorName = new ObjectName("RMIAgent:name=RMIConnector");
            mbs.registerMBean(connector, connectorName);
            Hello hello = new Hello();
            ObjectName testMBeanName = new ObjectName("RMIAgent:name=Hello");
            mbs.registerMBean(hello, testMBeanName);
            connector.start();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    }    
} 

测试类
public class RMIManager {

    public static void main(String[] args) {
        RmiConnectorClient client = new RmiConnectorClient();
        RmiConnectorAddress address = new RmiConnectorAddress();
        [color=orange]try {
            client.connect(address);
            ObjectName testMBeanName = ObjectName.getInstance("RMIAgent:name=testMBean");
            client.invoke(testMBeanName, "fun", null, null);
            client.setAttribute(testMBeanName, new Attribute("Field", new String(
                    "hello JMX from manager!")));
            System.out.println(client.invoke(testMBeanName, "fun", null, null));
        } catch (Exception e) {
            e.printStackTrace();
        } finally {

        }[/color]
    }
}
分享到:
评论

相关推荐

    jmx介绍和使用

    jmx的简单介绍和使用,包含一些简单的代码示例,看完基本能了解jmx并使用。

    JMX小例子以及介绍

    JMX小例子以及介绍 JMX小例子以及介绍 JMX小例子以及介绍

    JMX实战 JMX开发

    书中不仅有对于基础知识的介绍,还有对于JMX开发中重大的体系架构问题的深入探讨,总结了大量JMX开发中的设计模式,并讨论了框架、安全性与性能等等。书中提供了几个典型的例子,兼顾各种开发平台,这些例子的代码...

    jmx技术介绍(ppt)

    有关jmx技术培训的ppt 比较基础的讲解了jmx技术

    《jmx技术介绍》配套源代码

    《jmx技术介绍》配套源代码 示例代码多而又简单清晰

    JMX规范介绍

    java管理扩展(The Java Management extensions )也叫做JMX规范,定义了一个java网络管理、监控和应用程序服务的架构,以及其中的设计模式和API。这个章节将介绍所有这些内容,并展示JMX涉及的广阔领域。

    JMX1.4规范中文版

    这篇文档是对JMX 的一个介绍,给出了定JMX 设备层,代理层和部署层服务的规范。 它不是编程手册或者教程,而是希望读者可以对JMX 架构、设计模式和编程接口有一定程 度的理解。 完整的JMX 规范是由本书和API 文档...

    jmx 实现远程连接tomcat

    本文档主要介绍了jmx连接T远程监控tomcat的详细配置,文档包含了一些配置的详细图片和需要注意的内容

    论文研究-JMX技术在网络监控中的应用.pdf

    分析了当前网络监控中面临的主要问题,提出了采用JMX方案来解决的办法。介绍了JMX的技术特点,并采用该技术实现了IP网络管理中的网络监控任务的调配和管理。

    Spring jmx

    这是俞黎明一份关于jmx的介绍,以及如何结合spring开发jmx,是根据他的ppt改成的。

    Java分布式应用学习笔记09JMX-MBean的介绍

    Java分布式应用学习笔记09JMX-MBean的介绍

    Tomcat开启JMX服务方法介绍

    主要介绍了Tomcat开启JMX服务方法的相关内容,小编觉得挺不错的,在这里给大家分享一下,需要的朋友可以参考。

    史上最全的jmx运用讲义

    本节代码详细说明文件上传功能的开发流程,介绍知识点如下: 1. 文件上传页面和显示上传成功页面代码内容。 2. UploadAction类中实现上传功能方法和上传文件属性介绍。 3. struts.xml中UploadAction配置,以及...

    jmxtools-1.2.1.jar+jmxri-1.2.1.jar.zip

    需要的自会需要,介绍没用,亲测可用。 javax.jms包,sun的JMS接口规范包,官方已经不提供了,这里给2分,给大家下载。

    jmx-1_2_1-bin,jmxremote-1_0_1-bin,com.sun.jdmk.comm.HtmlAdaptorServer

    csdn有一个下载包含HtmlAdaptorServer这个class,不过不知道是不是官方的,而且跟网上介绍的资料不一样,所以自己去oracle官网找着下载下来分享给大家,只要2分啦 包含资源文件为如下: jmx_remote-1_0_1_03-ri.zip jmx-1...

    JMX入门教程

    JMX入门教程,详细介绍JMX的常用类和方法

    JMX1.4规范中文版.pdf

    JMX 技术是应用越来越广泛的技术,已经是JDK 标准的一部分。它的最新规范是1.4,这是介绍JMX的资料

    JMX技术学习非常好的资料

    概要的介绍了JMX技术,适合于初学者!通过该资料的学习,可以基本熟悉JMX的基本知识和技术架构!

    基于JMX的IT系统管理关键技术研究与实现

    基于JMX的IT系统管理关键技术研究与实现,详细介绍了使用jmx的方法

Global site tag (gtag.js) - Google Analytics