Module java.management

Package javax.management.openmbean


package javax.management.openmbean

提供了开放数据类型和开放MBean描述符类。一个开放MBean是一个MBean,其中属性的类型和操作参数以及返回值是使用一组预定义的Java类构建的。开放MBean便于与不一定具有对应应用程序特定类型访问权限的远程管理程序进行操作,包括非Java程序。

每个MBean都有一个关于MBean本身以及其属性、操作、构造函数和通知的信息的MBeanInfo。在开放MBean中,这个MBeanInfo实现了OpenMBeanInfo接口,通常是OpenMBeanInfoSupport的实例。

MBeanInfo.getAttributes返回的开放MBean的属性信息是一个实现OpenMBeanAttributeInfo的对象数组,通常是OpenMBeanAttributeInfoSupport的实例。除了关于属性的通常信息外,OpenMBeanAttributeInfo还指定了属性的OpenType。可能的OpenType值是预定义的,这就确保了远程管理程序能够理解它们。

类似的备注也适用于操作和构造函数的参数类型,以及操作的返回类型。

属性的Java语言类型,由getType()返回,与其OpenType,由getOpenType()返回,之间有区别。例如,如果Java语言类型是java.lang.String,那么OpenType将是SimpleType.String。如果Java语言类型是CompositeData,那么OpenType将是描述属性的CompositeData实例中项目的CompositeType

默认值和约束

在开放MBean中,属性和参数可以在OpenMBeanAttributeInfoOpenMBeanParameterInfo中关联默认值和/或约束。有两种方法可以指定这些约束。要么将值直接指定为OpenMBeanAttributeInfoSupportOpenMBeanParameterInfoSupport的构造函数之一的参数,例如OpenMBeanParameterInfoSupport(String, String, OpenType, Object, Object[]);要么将值指定为作为构造函数参数给定的Descriptor中。

当使用Descriptor时,感兴趣的字段如下:

对于defaultValueminValuemaxValue,关联的值必须是与openType对应的Java类型,或者是可以转换为该类型的字符串。如果找到了静态方法valueOf(String),则使用该方法进行转换;否则,如果找到了具有单个String参数的构造函数,则使用该构造函数;否则,转换失败。

对于legalValues,关联的值必须是数组或Set,并且数组或集合的元素必须可以按照defaultValue等描述的方式进行转换。

这些字段必须满足以下条件:

  • 值必须是适当类型的,或者是如上所述可以转换为适当类型的字符串;
  • 如果存在legalValues,则minValuemaxValue不能同时存在;
  • 如果存在defaultValue,则当其中任何一个也存在时,它必须满足legalValuesminValuemaxValue定义的约束;
  • 如果minValuemaxValue都存在,则minValue不能大于maxValue
自从:
1.5
参见: