Module java.management

Interface ModelMBeanInfo

所有已知的实现类:
ModelMBeanInfoSupport

public interface ModelMBeanInfo
此接口由每个ModelMBean的ModelMBeanInfo实现。必须在每个JMX代理中随附此接口的实现。

希望成为可管理资源的Java资源使用MBeanServer的createMBean方法实例化ModelMBean。然后,资源为ModelMBean实例设置ModelMBeanInfo和描述符。通过ModelMBeanInfo为ModelMBean公开的属性、操作和通知组成管理接口,并可以从MBeans、连接器/适配器等其他MBeans访问。通过描述符,可以定义和映射托管应用程序中的值和方法到ModelMBean的属性和操作。此映射可以在开发过程中在文件中定义,也可以在运行时动态和以编程方式定义。

在MBeanServer中实例化的每个ModelMBean都变得可管理:其属性、操作和通知通过连接到该MBeanServer的连接器/适配器变得可以远程访问。Java对象除非是符合JMX的MBean,否则无法在MBeanServer中注册。通过实例化ModelMBean,资源可以确保MBean是有效的。必须在每个公共方法上抛出MBeanException和RuntimeOperationsException。这允许从分布式通信(RMI、EJB等)中包装异常。

自1.5版本起:
1.5
  • Method Details

    • getDescriptors

      Descriptor[] getDescriptors(String inDescriptorType) throws MBeanException, RuntimeOperationsException
      返回由类型为inDescriptorType的ModelMBeanInfo的所有描述符组成的描述符数组。
      参数:
      inDescriptorType - 必须为要返回的描述符设置的descriptorType字段的值。必须为"mbean"、"attribute"、"operation"、"constructor"或"notification"。如果为null或空,则将返回所有类型。
      返回:
      如果类型为inDescriptorType,则包含ModelMBean的所有描述符的描述符数组。
      抛出:
      MBeanException - 包装了分布式通信异常。
      RuntimeOperationsException - 当参数中的descriptorType不是"mbean"、"attribute"、"operation"、"constructor"、"notification"、空或null时,包装了IllegalArgumentException。
      参见:
    • setDescriptors

      void setDescriptors(Descriptor[] inDescriptors) throws MBeanException, RuntimeOperationsException
      添加或替换ModelMBeanInfo中的描述符。
      参数:
      inDescriptors - 要设置在ModelMBeanInfo中的描述符。列表中的空元素将被忽略。所有描述符必须具有名称和descriptorType字段。
      抛出:
      RuntimeOperationsException - 对于空或无效描述符,包装了IllegalArgumentException。
      MBeanException - 包装了分布式通信异常。
      参见:
    • getDescriptor

      Descriptor getDescriptor(String inDescriptorName, String inDescriptorType) throws MBeanException, RuntimeOperationsException
      返回按名称和描述符类型请求的描述符。
      参数:
      inDescriptorName - 描述符的名称。
      inDescriptorType - 请求的描述符类型。如果为null或空,则将搜索所有类型。有效类型为'mbean'、'attribute'、'constructor'、'operation'和'notification'。此值将等于返回的描述符中的'descriptorType'字段。
      返回:
      包含具有相同名称和descriptorType的ModelMBean的描述符。如果未找到描述符,则返回null。
      抛出:
      MBeanException - 包装了分布式通信异常。
      RuntimeOperationsException - 对于null描述符名称或null或无效类型,包装了IllegalArgumentException。类型必须为"mbean"、"attribute"、"constructor"、"operation"或"notification"。
      参见:
    • setDescriptor

      void setDescriptor(Descriptor inDescriptor, String inDescriptorType) throws MBeanException, RuntimeOperationsException
      为ModelMBean设置类型为inDescriptorType的info数组中的描述符。将调用相应ModelMBean*Info的setDescriptor方法来设置指定的描述符。
      参数:
      inDescriptor - 要设置在ModelMBean中的描述符。它不能为null。所有描述符必须具有名称和descriptorType字段。
      inDescriptorType - 要设置的描述符类型。如果为null,则使用描述符中的descriptorType字段。如果指定了此值,则必须在描述符中的descriptorType字段中设置此值。必须为"mbean"、"attribute"、"constructor"、"operation"或"notification"。
      抛出:
      RuntimeOperationsException - 对于非法或null参数,或者如果描述符的名称字段在相应的MBeanAttributeInfo、MBeanConstructorInfo或MBeanNotificationInfo或MBeanOperationInfo中找不到时,包装了IllegalArgumentException。
      MBeanException - 包装了分布式通信异常。
      参见:
    • getMBeanDescriptor

      Descriptor getMBeanDescriptor() throws MBeanException, RuntimeOperationsException

      返回包含MBean范围策略的ModelMBean的描述符。此描述符包含有关MBean的元数据以及持久性和缓存的默认策略。

      描述符中定义的字段包括但不限于以下内容。请注意,当此表中的类型为Number时,也可以使用Long的十进制表示形式的String。

      ModelMBean字段
      名称 类型 含义
      name String MBean名称。
      descriptorType String 必须为"mbean"。
      displayName String 用于显示的MBean名称。
      persistPolicy String 其中之一:OnUpdate|OnTimer|NoMoreOftenThan|OnUnregister|Always|Never。请参阅JMX规范文档中的“MBean描述符字段”部分。
      persistLocation String 应将MBean持久化的完全限定目录名称(如果适用)。
      persistFile String 应将MBean持久化到的文件名。
      persistPeriod Number 对于OnTime和NoMoreOftenThan PersistPolicy,持久化周期的频率(以秒为单位)。
      currencyTimeLimit Number 缓存值有效的时间:<0表示永不,=0表示始终有效,>0表示秒。
      log String t:记录所有通知,f:不记录任何通知。
      logfile String 用于记录事件的完全限定文件名。
      visibility Number 1-4,其中1:始终可见,4:很少可见。
      export String 用于导出/公开此MBean的名称,以便其他JMX代理可以找到。
      presentationString String XML格式的字符串,允许将数据的呈现与MBean关联。

      默认描述符为:name=className,descriptorType="mbean",displayName=className,persistPolicy="never",log="F",visibility="1"。如果描述符不包含所有这些字段,则将使用这些默认值添加这些字段。

      注意:由于此规范先前版本中的不一致性,建议不要对currencyTimeLimit使用负值或零值。要指示缓存值永远无效,请省略currencyTimeLimit字段。要指示它始终有效,请为此字段使用一个非常大的数字。

      返回:
      MBean描述符。
      抛出:
      MBeanException - 封装了一个分布式通信异常。
      RuntimeOperationsException - 在获取描述符时发生了RuntimeException
      参见:
    • setMBeanDescriptor

      void setMBeanDescriptor(Descriptor inDescriptor) throws MBeanException, RuntimeOperationsException
      设置ModelMBean的描述符。此描述符包含有关MBean的默认、全局元数据以及持久性和缓存的默认策略。此操作完全替换描述符,不进行合并。如果要设置的描述符为null,则将创建默认描述符。默认描述符为:name=className,descriptorType="mbean",displayName=className,persistPolicy="never",log="F",visibility="1"。如果描述符不包含所有这些字段,则将使用这些默认值添加这些字段。有关有效字段名称的描述,请参见getMBeanDescriptor方法的javadoc。
      参数:
      inDescriptor - 要设置的描述符。
      抛出:
      MBeanException - 封装了一个分布式通信异常。
      RuntimeOperationsException - 封装了一个无效描述符的IllegalArgumentException。
      参见:
    • getAttribute

      返回按名称请求的ModelMBeanAttributeInfo。
      参数:
      inName - 要获取的ModelMBeanAttributeInfo的名称。如果没有为此名称存在ModelMBeanAttributeInfo,则返回null。
      返回:
      指定属性的属性信息,如果没有则返回null。
      抛出:
      MBeanException - 封装了一个分布式通信异常。
      RuntimeOperationsException - 封装了一个空属性名称的IllegalArgumentException。
    • getOperation

      返回按名称请求的ModelMBeanOperationInfo。
      参数:
      inName - 要获取的ModelMBeanOperationInfo的名称。如果没有为此名称存在ModelMBeanOperationInfo,则返回null。
      返回:
      指定操作的操作信息,如果没有则返回null。
      抛出:
      MBeanException - 封装了一个分布式通信异常。
      RuntimeOperationsException - 封装了一个空操作名称的IllegalArgumentException。
    • getNotification

      返回按名称请求的ModelMBeanNotificationInfo。
      参数:
      inName - 要获取的ModelMBeanNotificationInfo的名称。如果没有为此名称存在ModelMBeanNotificationInfo,则返回null。
      返回:
      指定通知的信息,如果没有则返回null。
      抛出:
      MBeanException - 封装了一个分布式通信异常。
      RuntimeOperationsException - 封装了一个空通知名称的IllegalArgumentException。
    • clone

      Object clone()
      创建并返回此对象的副本。
      返回:
      此对象的副本
    • getAttributes

      MBeanAttributeInfo[] getAttributes()
      返回用于管理的属性列表。每个属性由一个MBeanAttributeInfo对象描述。
      返回:
      一个MBeanAttributeInfo对象数组。
    • getClassName

      String getClassName()
      返回由此MBeanInfo描述的MBean的Java类名称。
      返回:
      Java类名称。
    • getConstructors

      MBeanConstructorInfo[] getConstructors()
      返回MBean的公共构造函数列表。每个构造函数由一个MBeanConstructorInfo对象描述。
      返回:
      一个MBeanConstructorInfo对象数组。
    • getDescription

      String getDescription()
      返回MBean的人类可读描述。
      返回:
      描述。
    • getNotifications

      MBeanNotificationInfo[] getNotifications()
      返回由MBean发出的通知列表。每个通知由一个MBeanNotificationInfo对象描述。

      除了应用程序指定的任何通知外,ModelMBean始终还可以发送两个额外的通知:

      • 一个具有描述符名称"GENERIC"和displayName"jmx.modelmbean.generic"的通知
      • 第二个是具有描述符名称"ATTRIBUTE_CHANGE"和displayName"jmx.attribute.change"的标准属性更改通知
      因此,ModelMBeanInfo的任何实现应始终在应用程序指定的通知之外添加这两个通知。
      返回:
      一个MBeanNotificationInfo对象数组。
    • getOperations

      MBeanOperationInfo[] getOperations()
      返回MBean的操作列表。每个操作由一个MBeanOperationInfo对象描述。
      返回:
      一个MBeanOperationInfo对象数组。