Laying the MBean
MBean编码规则
1)MBean必须是具体的Java类(非抽象,可以实例化),agent使用反射来创建MBean。2)MBean要么实现自己的MBean接口,要么是DynamicMBean接口。MBean接口可以是任何接口,遵循命名规则:ClassNameMBean。
3)MBean必须有public构造器
MBean是否实现javax.management.NotificationBroadcaster是可选的。此接口允许MBean发送通知给监听者。
使用标准MBean
standard MBean属性是类成员变量,通过get,set方法暴露给管理者。standard MBean操作是public method。一旦创建standard MBean的管理接口不能改变。组成标准管理接口
MBean的所有信息都必须从管理接口处收集。管理接口包括一组通过MBean暴露的属性和操作,允许管理程序使用MBean,管理接口包括MBean的构造器和通知。管理接口的组件
public constructor
通过HTML adapter可以看到MBean是 可以被动态载入到JMX agent中。agents使用任何被MBean暴露的public构造器来实现。构造器包含在管理接口的定义中,因为特定的constructor基于MBean对象的生命周期定义了特定行为。例如一个构造器会告诉MBean记录所有的action,而其他的constructo不会。对于standard MBean,agent使用反省(introspection)来发现public constructor。
Attributes
attribute是MBean管理接口的至关重要部分。standard MBean通过声明getter和setter方法来暴露属性。
Operations
operations与action对应的操作,在管理资源中初始化。standard MBean暴露的operation是除getter和setter的其他方法。
Notifications
Notification允许MBean与注册的监听器通信。MBean想要发出通知,必须实现NotificationBroadcaster接口。
Standard MBean 继承模式
直接实现MBean接口
MBean可以通过MBean接口的实现来创建。继承管理接口
有效的MBean可以通过继承其它有效standard MBean来实现。这种情况不是直接实现MBean接口,但它也是MBean。他继承了父类的管理接口。当想改变MBean的行为,但是保持了管理接口。
覆盖管理接口
扩展管理接口
当一个MBean管理接口A继承另一个MBean管理接口B,则管理接口A暴露的方法是两个接口的方法。
扩展和覆盖的结合
类似覆盖,JMX agent只是别最近的MBean管理接口。JMX agent识别CopierPrinterMBean接口,但由于CopierPrinterMBean扩展了PrinterMBean和DeviceMBean,所以CopierPrinter的MBean管理接口包含三个。
扩展非MBean接口
当MBean接口扩展一个非MBean接口,结果暴露的属性和操作由MBean接口和它扩展的接口决定。