生成 MBean
MBean 是类似于 JavaBeanTM 的受管 Java 对象,它遵循 JMX 规范的校验层规定的设计模式。MBean 可以表示设备、应用程序或任何需要管理的资源。MBean 公开了一个管理接口,即一组可读和/或可写的属性、一组可调用的操作以及自描述。管理接口在 MBean 实例的整个生命周期中不会发生更改。当发生某些定义的事件时,MBean 还会发送通知。
JMX 规范定义了四种类型的 MBean:标准 MBean、动态 MBean、开放 MBean 和模型 MBean。本章中的示例对最简单的 MBean 类型,即标准 MBean 进行了说明。
标准 MBean
通过编写名为 SomethingMBean 的 Java 接口以及用于实现该接口的名为 Something 的 Java 类,来定义标准 MBean。接口中的每个方法定义了 MBean 中的一个属性或操作。缺省情况下,每个方法会定义一个操作。属性和操作只是一些执行特定设计模式的方法。标准 MBean 由 MBean 接口(列出了所有公开的属性和操作的方法)和类(用于实现此接口并提供校验资源的功能)组成。
使用 MBean 向导生成标准 MBean
本部分详细介绍了标准 MBean 示例。MBean 向导用于生成这些类。
- 选择“文件”>“新建文件...”。
- 选择“管理”类别。在“文件类型”中,选择 "JMX MBean"。
- 键入名称、包以及描述。
- 单击“下一步”。
- 选择一种 MBean 类型。缺省情况下,将创建标准 MBean。如果要创建更具动态性和自描述性的 MBean,则可以选择“动态 MBean”。这种 MBean 的实现方式更为复杂,但允许提供一些描述性的元数据。扩展的标准 MBean 与标准 MBean 的实现方法一样简单,并且具有动态 MBean 的动态性。这种类型的 MBean 非常适于为现有的类添加管理。
- 您可以输入描述以说明 MBean 类。在此向导中键入的任何描述将生成:
- 标准 MBean 的 Javadoc。
- 添加到 MBeanInfo 中,以便在运行时为动态和扩展的 MBean 提供有关 MBean 的描述。
- 如果希望 MBean 实现 MBeanRegistration 接口,请选中“实现 MBeanRegistration 接口”复选框。MBeanRegistration 接口是一个使用简便的接口,MBean 可通过它来跟踪其生命周期。重要的事件都与 MBean 注册(pre/post register/unregister 回调)有关。
- 您可以选中“为 preRegister 方法参数生成私有字段”。如果选择此选项,则向导会生成一些私有字段以保留对传递给 preRegister 回调的参数的引用。通常,保留对所提供的 ObjectName 和 MBeanServer 的引用是非常重要的。
- 现在您可以随时单击“完成”。
- 单击“下一步”。
- 如果希望 MBean 包含属性,请单击“添加属性”。
- 在“属性”表的第一行中,键入以下内容:
- 在“名称”列中,键入属性名(如 "Status")。
- 在“类型”列中,选择一种 Java 类型(如 "String")。
- 在“访问”列中,选择一种访问类型(如“读/写”)。
- 在“描述”列中,键入此属性所表示的内容(如“此 MBean 的当前状态”)。
- 单击“下一步”。
- 如果希望 MBean 包含操作,请单击“添加操作”。
- 在“操作”表的第一行中,键入以下内容:
- 在“名称”列中,键入操作名(如 "reset")。
- 在“返回类型”列中,选择一种 Java 类型(如 "void")。
- 如果要添加输入参数,请在“参数”列中单击“编辑”按钮。
- 单击“添加参数”。
- 在“参数名”列中,可以更改缺省的参数名。
- 在“参数类型”列中,选择一种 Java 类型(如 "String")。
- 在“参数描述”列中,键入此参数所表示的内容。
- 在“描述”列中,键入此操作所表示的内容(如“重置当前的状态”)。
- 单击“下一步”。
- 如果希望 MBean 发送通知,请选择“实现 NotificationEmitter 接口”。该向导可以基于 NotificationBroadcasterSupport 委托来生成此接口的实现。也可以生成一些用于处理通知序列号的代码。请选中相关的复选框以生成该代码。
- 如果希望 MBean 定义通知,请单击“添加通知”。
- 在“通知”表的第一行中,键入以下内容:
- 在“通知类”列中,可以选择一个标准的 JMX 通知类,或者键入您自己的通知类。如果选择 AttributeChangeNotification 类,则通知类型会自动设置为 AttributeChangeNotification.ATTRIBUTE_CHANGE。
- 在“描述”列中,键入通知描述(如“在更改状态属性时发送通知”)。
- 在“通知类型”列中,单击“编辑”按钮。
- 单击“添加类型”。
- 在“通知”列中,可以将缺省类型更改为您自己的类型(如 com.foo.event.BIRTHDAY)。
- 单击“下一步”。
- 如果要生成 JUnit 测试,请选中“创建 JUnit 测试”复选框。
- 单击“完成”。
- 将在编辑器中打开 MBean 实现类。如果选择了标准 MBean 类型,则会在 src 和选定的测试包中生成 MBean 接口(名为 <MBean 名称>MBean)、实现类(名为 <MBean 名称>)和 JUnit 测试。
- 现在,您可以将自己的逻辑添加到生成的代码中并运行 JUnit 测试了。