返回为此 modelmbean 定义的指定属性的值。该属性返回的最后一个值可以在该属性的描述符中进行缓存。有效值将位于 'value' 字段中(如果有)。如果描述符中的 'currencytimelimit' 字段为:
- <0 则不缓存该值,且该值永远无效。调用该属性的获取方法。清除 'value' 和 'lastupdatedtimestamp' 字段。
- =0 则总是缓存该值,且该值总有效。返回 'value' 字段。如果没有 'value' 字段,则调用属性的获取方法。将 'lastupdatedtimestamp' 字段和 'value' 字段设置为该属性值和当前时间戳。
- >0 表示 'value' 字段有效的秒数。当 'lastupdatedtimestamp' + 'currencytimelimit' > now 时,'value' 字段不再有效。
- 当 'value' 有效时,返回 'value'。
- 当 'value' 不再有效时,调用该属性的获取方法。更新 'lastupdatedtimestamp' 字段和 `value' 字段。
注:由于与此规范以前版本不一致,因此对于 currencytimelimit
,建议不要使用负值或零。要指示某个缓存的值永远无效,请忽略 currencytimelimit
字段。要指示它总是有效,请为此字段使用一个非常大的值。
如果 'getmethod' 字段包含有效的操作描述符名称,则执行操作描述符所描述的方法。该方法的响应将作为属性值返回。如果操作失败或返回值的类型与属性声明的类型不兼容,则将抛出异常。
如果没有定义 'getmethod' 字段,则返回属性的默认值。如果返回值的类型与属性声明的类型不兼容,则将抛出异常。
属性声明的类型是 mbeanattributeinfo.gettype()
返回的 string。如果以下条件中有一个为真,则值与此类型兼容:
在此实现中,对于需要调用 getmethod 的每种情况,因为该方法是通过标准的 "invoke" 方法调用的并因此需要 operationinfo,所以必须为该 getmethod 指定一个操作,以便调用正确
iis7站长之家。
- 指定者:
- 接口
dynamicmbean
中的 getattribute
- 参数:
attrname
- 指定要检索的属性名称的 string。它必须与 modelmbeanattributeinfo 名称匹配。
- 返回:
- 从描述符 'value' 字段或从描述符的 'getmethod' 字段中的操作调用检索到的属性值。
- 抛出:
attributenotfoundexception
- 如果指定的属性在 mbean 中不是可访问的。以下情况可能导致 attributenotfoundexception:
- 未找到 model mbean 的 modelmbeaninfo。
- 未找到指定属性名称的 modelmbeanattributeinfo。
- modelmbeanattributeinfo isreadable 方法返回 'false'。
mbeanexception
- 包装以下 exception 之一:
-
invalidattributevalueexception
: 从属性的获取方法检索到一个错误值类型,或者描述符中未定义属性的 'getmethod' 字段且默认值不存在。
-
servicenotfoundexception
: 没有为属性的获取方法定义 modelmbeanoperationinfo,或者没有与 modelmbeanoperationinfo 关联的描述符,或者托管资源为 null。
-
invalidtargetobjecttypeexception
'targettype' 字段值不是 'objectreference'。
- 由管理对象的设置方法抛出的 exception。
reflectionexception
- 包装试图调用设置方法时抛出的 exception
。
runtimeoperationsexception
- 包装 illegalargumentexception
:参数中的属性名称为 null。- 另请参见:
setattribute(javax.management.attribute)