关闭

JMX使用总结

标签: jmxservicejavaserver设计模式servlet
3047人阅读 评论(0) 收藏 举报
分类:

  JMX(Java Management Extensions)是一套基于Java技术的网管系统解决方案的规范。JMX为网管系统定义了一整套体系结构和设计模式用于实现各类管理操作,而JDMK是JMX的第一个商业化产品,它是JMX(Java Management extensions)的一个实现,它提供了通过Java应用程序来管理Java对象的一个框架。使用JMX的优点:
1>增强系统的可配性:不对该系统进行重启的情况下,修改的配置文件即可生效。例如连接数据库的配置和日志信息级别的配置
2>可以实现对新增模块的动态加载
3>使应用程序模块化,并可替换或移除正在运行程序中的模块
4>可对程序中的一些操作或者变量进行监控-告警

JMX

<一>对Instrumentation层中4种类型的MBean分别做一说明:

1>Standard MBean
由MBean接口和实现该接口的类组成。MBean接口中包含欲通过远程客户端让管理员看到的变量和可操作的方法
2>Dynamic MBean
由一个实现DynamicMBean接口的类组成。欲通过远程客户端让管理员看到的变量和操作的方法可以直接在这个类中进行声明,无需为此专门再写一个MBean接口。这样的话,可进行远程操作的方法可以根据需要进行动态的配置
    类中需要实现的有如下几个部分:
    MBeanInfo 最终实现的一个对象,这个类构造函数的参数中包含下面其它所有部分返回的数组
    MBeanOperationInfo 初始化可供管理员进行远程操作的方法
    MBeanConstructorInfo
    MBeanParameterInfo
    MBeanAttributeInfo 初始化可供管理员进行查看的变量
    MBeanNotificationInfo 初始化需要监听的变量和操作
3>Model MBean
由RequiredModelMBean、Model MBean Metadata和Target Object(s)组成。其中Model MBean Metadata可由xml配置文件进行初始化。由于Model MBean的实现是继承了Dynamic MBean,所以Model MBean的实现方法类似于Dynamic MBean,结构也类似于Dynamic MBean。
注:1.xml文件的加载可以使用adventnet公司xmojo.jar包中的Utilities.convertXmlToModelMBeanInfo("ServerInfo.xml")方法进行加载
    2.由于在运行的时候经常出现找不到类的情况,在引入类名时尽量包含路径,如com.neu.mbean.xmodel.ServerInfo

<二>对Agent层中包含的三种Service(在程序中可实现监控-告警)分别做一说明:

1>Timer Service
在如下情况发生告警:
  1.在指定的时间只告警一次
  2.在一个指定的时间范围内反复告警
2>Monitor Service
在如下情况发生告警:
  1.在指定的触发事件发生之后告警
  2.在对指定属性进行监测的时候发生错误之后告警
包含三种类型的Monitor:
  a.Counter Monitor 当被监测变量的值>=指定的值时进行告警
  b.Gauge Monitor 当被监测变量的值>=指定的最大值或者<=指定的最小值时进行告警
  c.String Monitor 当被监测字符串和指定的字符串匹配或者不匹配的时候进行告警
3>M-Let Service
允许将远程获取的一个或者多个MBean注册到MBean Server,这个MBean的远程路径和一些所需的其它配置都包含在一个M-Let文件中

在现有管理系统中添加JMX的解决方案(不使用JMX自带的HtmlAdaptorServer,而是通过在现有管理系统中增添一个新页面来实现对MBean的管理):
1>在Servlet初始化方法中建立MBeanServer,并注册所需的MBean,如下:
  MBeanServer server = MBeanServerFactory.createMBeanServer("Local");
  ObjectName ob_name = new ObjectName("MBeanInfo","name","SimpleStandard");
  server.createMBean("org.webjmx.example.SimpleStandard",ob_name);
  ObjectName ob_name = new ObjectName("MBeanInfo", "name", "SimpleDynamic");
  server.createMBean("org.webjmx.example.SimpleDynamic", ob_name);
2>管理界面通过开源项目webjmx(实现了可以很方便的编写管理MBean的管理界面的jmx标签)来实现,如下:
  <jmx:getMBeanServer id="server" attribute="locator"/>
  <jmx:getFeatureByName id="attribute" name="attrs" featureName="State"/>
  <jmx:getFeatureByName id="operation" name="mbi" property="operations" featureName="reset"/>
详细介绍可参考webjmx包中自带的一个example

参考:http://www.xmojo.org/products/xmojo/docs/index_no_frames.html

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:54778次
    • 积分:710
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:2篇
    • 译文:0篇
    • 评论:9条
    最新评论