生成 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 向导用于生成这些类。

  1. 选择“文件”>“新建文件...”。
  2. 选择“管理”类别。在“文件类型”中,选择 "JMX MBean"。
  3. 键入名称、包以及描述。
  4. 单击“下一步”。
  5. 选择一种 MBean 类型。缺省情况下,将创建标准 MBean。如果要创建更具动态性和自描述性的 MBean,则可以选择“动态 MBean”。这种 MBean 的实现方式更为复杂,但允许提供一些描述性的元数据。扩展的标准 MBean标准 MBean 的实现方法一样简单,并且具有动态 MBean 的动态性。这种类型的 MBean 非常适于为现有的类添加管理。
  6. 您可以输入描述以说明 MBean 类。在此向导中键入的任何描述将生成:
  7. 如果希望 MBean 实现 MBeanRegistration 接口,请选中“实现 MBeanRegistration 接口”复选框。MBeanRegistration 接口是一个使用简便的接口,MBean 可通过它来跟踪其生命周期。重要的事件都与 MBean 注册(pre/post register/unregister 回调)有关。
  8. 您可以选中“为 preRegister 方法参数生成私有字段”。如果选择此选项,则向导会生成一些私有字段以保留对传递给 preRegister 回调的参数的引用。通常,保留对所提供的 ObjectName 和 MBeanServer 的引用是非常重要的。
  9. 现在您可以随时单击“完成”。
  10. 单击“下一步”。
  11. 如果希望 MBean 包含属性,请单击“添加属性”。
  12. 在“属性”表的第一行中,键入以下内容:
    1. 在“名称”列中,键入属性名(如 "Status")。
    2. 在“类型”列中,选择一种 Java 类型(如 "String")。
    3. 在“访问”列中,选择一种访问类型(如“读/写”)。
    4. 在“描述”列中,键入此属性所表示的内容(如“此 MBean 的当前状态”)。
  13. 单击“下一步”。
  14. 如果希望 MBean 包含操作,请单击“添加操作”。
  15. 在“操作”表的第一行中,键入以下内容:
    1. 在“名称”列中,键入操作名(如 "reset")。
    2. 在“返回类型”列中,选择一种 Java 类型(如 "void")。
    3. 如果要添加输入参数,请在“参数”列中单击“编辑”按钮。
      1. 单击“添加参数”。
      2. 在“参数名”列中,可以更改缺省的参数名。
      3. 在“参数类型”列中,选择一种 Java 类型(如 "String")。
      4. 在“参数描述”列中,键入此参数所表示的内容。
    4. 在“描述”列中,键入此操作所表示的内容(如“重置当前的状态”)。
  16. 单击“下一步”。
  17. 如果希望 MBean 发送通知,请选择“实现 NotificationEmitter 接口”。该向导可以基于 NotificationBroadcasterSupport 委托来生成此接口的实现。也可以生成一些用于处理通知序列号的代码。请选中相关的复选框以生成该代码。
  18. 如果希望 MBean 定义通知,请单击“添加通知”。
  19. 在“通知”表的第一行中,键入以下内容:
    1. 在“通知类”列中,可以选择一个标准的 JMX 通知类,或者键入您自己的通知类。如果选择 AttributeChangeNotification 类,则通知类型会自动设置为 AttributeChangeNotification.ATTRIBUTE_CHANGE。
    2. 在“描述”列中,键入通知描述(如“在更改状态属性时发送通知”)。
    3. 在“通知类型”列中,单击“编辑”按钮。
      1. 单击“添加类型”。
      2. 在“通知”列中,可以将缺省类型更改为您自己的类型(如 com.foo.event.BIRTHDAY)。
  20. 单击“下一步”。
  21. 如果要生成 JUnit 测试,请选中“创建 JUnit 测试”复选框。
  22. 单击“完成”。
  23. 将在编辑器中打开 MBean 实现类。如果选择了标准 MBean 类型,则会在 src 和选定的测试包中生成 MBean 接口(名为 <MBean 名称>MBean)、实现类(名为 <MBean 名称>)和 JUnit 测试。
  24. 现在,您可以将自己的逻辑添加到生成的代码中并运行 JUnit 测试了。


法律声明