读书人

jmx引见

发布时间: 2012-08-27 21:21:57 作者: rapoo

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代码





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

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]    }}

读书人网 >编程

热点推荐