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中,属性和参数可以在OpenMBeanAttributeInfo
或OpenMBeanParameterInfo
中关联默认值和/或约束。有两种方法可以指定这些约束。要么将值直接指定为OpenMBeanAttributeInfoSupport
或OpenMBeanParameterInfoSupport
的构造函数之一的参数,例如OpenMBeanParameterInfoSupport(String, String, OpenType, Object, Object[])
;要么将值指定为作为构造函数参数给定的Descriptor
中。
当使用Descriptor
时,感兴趣的字段如下:
defaultValue
定义了getDefaultValue()
返回的值;minValue
定义了getMinValue()
返回的值;maxValue
定义了getMaxValue()
返回的值;legalValues
定义了getLegalValues()
返回的值。
对于defaultValue
、minValue
和maxValue
,关联的值必须是与openType
对应的Java类型,或者是可以转换为该类型的字符串。如果找到了静态方法valueOf(String)
,则使用该方法进行转换;否则,如果找到了具有单个String
参数的构造函数,则使用该构造函数;否则,转换失败。
对于legalValues
,关联的值必须是数组或Set
,并且数组或集合的元素必须可以按照defaultValue
等描述的方式进行转换。
这些字段必须满足以下条件:
- 值必须是适当类型的,或者是如上所述可以转换为适当类型的字符串;
- 如果存在
legalValues
,则minValue
和maxValue
不能同时存在; - 如果存在
defaultValue
,则当其中任何一个也存在时,它必须满足legalValues
、minValue
或maxValue
定义的约束; - 如果
minValue
和maxValue
都存在,则minValue
不能大于maxValue
。
- 自从:
- 1.5
- 参见:
-
ClassDescriptionArrayType<T>
ArrayType
类是描述所有n维数组的开放数据值的开放类型类的实例。CompositeData
接口指定了一种特定类型的复杂开放数据对象的行为,这些对象表示复合数据结构。一个InvocationHandler
,将getter方法转发给CompositeData
。CompositeDataSupport
类是实现CompositeData
接口的开放数据类。一个Java类可以实现这个接口,以指示如何通过MXBean框架将其转换为CompositeData
。CompositeType
类是描述CompositeData
值类型的开放类型类的实例。当预期的是一个复合数据的项目名称或一个表格数据的行索引,但实际上不是有效时,抛出这个运行时异常。当开放数据值的开放类型与预期的不一致时,抛出这个运行时异常。当要添加到表格数据实例的行的索引已经用于引用该表格数据实例中的另一行时,抛出这个运行时异常。当无法构造一个开放类型、开放数据或开放MBean元数据信息实例,因为一个或多个有效性约束未满足时,抛出这个已检查异常。描述了一个开放MBean的属性。描述了一个开放MBean的属性。描述了一个开放MBean的构造函数。描述了一个开放MBean的构造函数。描述了一个开放MBean的操作。描述了一个开放MBean的操作。描述了一个开放MBean的一个或多个操作或构造函数中使用的参数。描述了一个开放MBean的一个或多个操作或构造函数中使用的参数。OpenType<T>OpenType
类是描述开放数据值的实际开放类型的所有类的父抽象类。SimpleType<T>TabularData
接口指定了一种特定类型的复杂开放数据对象的行为,这些对象表示表格数据结构。TabularDataSupport
类是实现TabularData
和Map
接口的开放数据类,内部基于哈希映射数据结构。TabularType
类是描述TabularData
值类型的开放类型类的实例。