2.3开放MBean
开放MBean也是一生中 动态MBean。比一般的动态MBean强大的特点在于。开放MBean定义了一套数据类型,利用开放MBean的数据类型,MBean可以设定更加复杂的属性和操作方法参数。
在开放MBean的属性和参数中使用的数据类型都继承自OpenType抽象类。继承OpenType的类型有4种:ArrayType, CompositeType,SimpleType和TabularType。它们分别代表数组类型、复合类型、简单类型和表格类型。其中。简单类型包括 Java的常用数据类型。开放MBean还提供了TabularData,CompositeData接口来表示复杂数据对象。
开放MBean需要实现DynamicMBean接口,并利用OpenMBeanInfo来提供MBean信息。
2.4模型MBean
模型MBean是对动态MBean的扩展。模型MBean需要实现的ModelMBean接口继承自DynamicMBean接口,ModelMBean还继承了ModelMBeanNotificationBroadcaster和PersisrentMBent这两个接口。
ModelMBeanNotificationBroadcaster使模型MBent能够传递通知信息,模型MBent的属性改变可以直接触发JMX通知事件。PersistentMBean接口的实现使模型MBent的状态信息可以被持久化输出和导入。
3使用JMX服务
3.1通知服务
JMX还提供了MBent的通知机制,通知信息可以从实现了NotificationBroadcaster的MBent(例如模型MBent)发送至实现了 NotificationListener的MBent,中间可以插入NotificationFilter,起到过滤信息的作用。
3.2监视服务
JMX主要提供了三种监视器:CounterMonitor,GaugeMonitor和StringMonitor。这三种监视器本身也是MBent,它们分别用于监视属性值的增长信息,监控属性值在一个区域内的情况,监控字符类型属性的匹配情况。当属性值在监控中匹配到改变信息后,监控器就会发出JMX通知给感兴趣的NotificationListener。
3.3动态加载MBean
运用JMX技术的另一个好处是让你可以很容易地将第三方的工作嵌入进来,特别是在JMX中,利用JMX提供的MBean动态加载服务,多个MBean的信息可以被记录到一个Mlet文件中,通过Mlet这个服务。可以从Mlet直接启动MBean。
<MLET
CODE = "org.mortbay.jetty.jmx.ServerMBean"
ARCHIVE = "org.mortbay.jetty.jmx.jar"
CODEBASE = "lib">
<ARG type = "java.lang.String" value = "etc/jetty.xml">
</MLET>
Mlet文件中的每个Mlet元素代表着一个MBean,其中记录着MBean的代码名称、所在的确jar文件位置、目录位置和若干个参数。有了这个Mlet文件,你只需使用下面的几行代码就可以启动jetty服务器。