- 所有已实现的接口:
-
MBeanRegistration
,Relation
,RelationSupportMBean
RelationSupport类符合标准MBean的设计模式。因此,用户可以决定自己实例化一个RelationSupport对象作为MBean(因为它遵循MBean的设计模式),将其注册到MBean服务器,然后将其添加到Relation Service中。
用户还可以在创建自己的MBean关系类时,使其扩展RelationSupport,以检索所需接口的实现(见下文)。
在用户关系MBean类中,还可以有一个成员作为RelationSupport对象,并通过将所有操作委托给该成员来实现所需的接口。
RelationSupport实现了Relation接口(由Relation Service处理)。
它还实现了MBeanRegistration接口,以便能够检索其注册的MBean服务器(如果注册为MBean)以访问其Relation Service。
- 自版本:
- 1.5
-
Constructor Summary
ConstructorDescriptionRelationSupport
(String relationId, ObjectName relationServiceName, String relationTypeName, RoleList list) 创建一个RelationSupport
对象。RelationSupport
(String relationId, ObjectName relationServiceName, MBeanServer relationServiceMBeanServer, String relationTypeName, RoleList list) 创建一个RelationSupport
对象。 -
Method Summary
Modifier and TypeMethodDescription返回关系中存在的所有角色。检索关系中各个角色中引用的MBeans。返回关系标识符(用于在Relation Service内唯一标识关系)。返回处理关系的Relation Service的ObjectName。返回关联关系类型的名称。检索给定角色名称的角色值。getRoleCardinality
(String roleName) 返回当前在给定角色中引用的MBeans数量。检索具有给定名称的角色的值。void
handleMBeanUnregistration
(ObjectName objectName, String roleName) 当在角色中引用的MBean取消注册时,Relation Service使用的回调。返回一个内部标志,指定对象是否仍由Relation Service处理。void
允许MBean在从MBean服务器中取消注册后执行所需的任何操作。void
postRegister
(Boolean registrationDone) 允许MBean在在MBean服务器中注册或注册失败后执行所需的任何操作。void
允许MBean在被MBean服务器取消注册之前执行所需的任何操作。preRegister
(MBeanServer server, ObjectName name) 允许MBean在注册到MBean服务器之前执行所需的任何操作。返回关系中所有角色,而不检查读取模式。void
指定此关系是否由Relation Service处理。void
设置给定的角色。设置给定的角色。
-
Constructor Details
-
RelationSupport
public RelationSupport(String relationId, ObjectName relationServiceName, String relationTypeName, RoleList list) throws InvalidRoleValueException, IllegalArgumentException 创建一个RelationSupport
对象。当用户将RelationSupport对象注册为MBean时,或者创建一个扩展RelationSupport的用户关系MBean类时,必须使用此构造函数。
在Relation Service级别不执行任何操作,即
RelationSupport
对象不会添加到RelationService
中,并且不会执行任何检查以查看提供的值是否正确。该对象始终会被创建,除非:- 任何必需参数为
null
。- 两个角色使用相同的名称。
要作为关系处理,
RelationSupport
对象必须使用Relation Service方法addRelation()添加到Relation Service中。- 参数:
-
relationId
- 关系标识符,用于在Relation Service中标识关系。预期在给定的Relation Service中是唯一的。
-
relationServiceName
- 关系将被注册的Relation Service的ObjectName。此参数是必需的,因为Relation Service知道给定关系的关系类型的定义,因此将能够检查更新操作(设置)。
-
relationTypeName
- 关系类型的名称。预期已在给定的Relation Service中创建。
-
list
- 初始化关系的角色(Role对象)列表。可以为null
。预期符合关联关系类型中的关系信息。
- 抛出:
-
InvalidRoleValueException
- 如果两个角色使用相同的名称。 -
IllegalArgumentException
- 如果任何必需参数(关系id、关系服务ObjectName或关系类型名称)为null
。
-
RelationSupport
public RelationSupport(String relationId, ObjectName relationServiceName, MBeanServer relationServiceMBeanServer, String relationTypeName, RoleList list) throws InvalidRoleValueException, IllegalArgumentException 创建一个RelationSupport
对象。当用户关系MBean实现了预期由关系支持的接口并委托给RelationSupport对象时,必须使用此构造函数。
此对象需要知道预期处理关系的Relation Service。因此,它必须知道Relation Service注册的MBean Server。
根据限制,关系MBean必须在与预期处理它的Relation Service相同的MBean Server中注册。因此,用户关系MBean必须被创建和注册,然后可以在识别的MBean Server中创建包装的RelationSupport对象。
在Relation Service级别不执行任何操作,即
RelationSupport
对象不会添加到RelationService
中,并且不会执行任何检查以查看提供的值是否正确。该对象始终会被创建,除非:- 任何必需参数为
null
。- 两个角色使用相同的名称。
要作为关系处理,
RelationSupport
对象必须使用Relation Service方法addRelation()添加到Relation Service中。- 参数:
-
relationId
- 关系标识符,用于在Relation Service中标识关系。预期在给定的Relation Service中是唯一的。
-
relationServiceName
- 关系将被注册的Relation Service的ObjectName。此参数是必需的,因为Relation Service知道给定关系的关系类型的定义,因此将能够检查更新操作(设置)。
-
relationServiceMBeanServer
- 封装MBean所在或将要注册的MBean Server。预期是Relation Service注册或将要注册的MBean Server。
-
relationTypeName
- 关系类型的名称。预期已在给定的Relation Service中创建。
-
list
- 初始化关系的角色(Role对象)列表。可以为null
。预期符合关联关系类型中的关系信息。
- 抛出:
-
InvalidRoleValueException
- 如果两个角色使用相同的名称。 -
IllegalArgumentException
- 如果任何必需参数(关系id、关系服务ObjectName、关系服务MBeanServer或关系类型名称)为null
。
-
-
Method Details
-
getRole
public List<ObjectName> getRole(String roleName) throws IllegalArgumentException, RoleNotFoundException, RelationServiceNotRegisteredException 检索给定角色名称的角色值。根据关系类型,检查角色是否存在并可读。
- 指定者:
-
getRole
在接口Relation
中 - 参数:
-
roleName
- 角色名称 - 返回:
- 作为角色值的ObjectName对象的ArrayList
- 抛出:
-
IllegalArgumentException
- 如果角色名称为null -
RoleNotFoundException
- 如果:- 没有具有给定名称的角色
- 角色不可读。
-
RelationServiceNotRegisteredException
- 如果Relation Service未在MBean Server中注册 - 参见:
-
getRoles
public RoleResult getRoles(String[] roleNameArray) throws IllegalArgumentException, RelationServiceNotRegisteredException 检索具有给定名称的角色的值。对于每个角色,检查其是否存在并根据关系类型可读。
- 指定者:
-
getRoles
在接口Relation
中 - 参数:
-
roleNameArray
- 要检索的角色名称数组 - 返回:
- 一个RoleResult对象,包括一个RoleList(成功检索的角色)和一个RoleUnresolvedList(未检索的角色)。
- 抛出:
-
IllegalArgumentException
- 如果角色名称为null -
RelationServiceNotRegisteredException
- 如果Relation Service未在MBean Server中注册 - 参见:
-
getAllRoles
返回关系中存在的所有角色。- 指定由:
-
getAllRoles
在接口Relation
中 - 返回:
- 一个RoleResult对象,包括一个RoleList(成功检索的角色)和一个RoleUnresolvedList(无法读取的角色)。
- 抛出:
-
RelationServiceNotRegisteredException
- 如果关系服务未在MBean服务器中注册
-
retrieveAllRoles
返回关系中的所有角色,而不检查读取模式。- 指定由:
-
retrieveAllRoles
在接口Relation
中 - 返回:
- 一个RoleList
-
getRoleCardinality
public Integer getRoleCardinality(String roleName) throws IllegalArgumentException, RoleNotFoundException 返回当前在给定角色中引用的MBean数量。- 指定由:
-
getRoleCardinality
在接口Relation
中 - 参数:
-
roleName
- 角色名称 - 返回:
- 该角色中当前引用的MBean数量
- 抛出:
-
IllegalArgumentException
- 如果角色名称为空 -
RoleNotFoundException
- 如果没有给定名称的角色
-
setRole
public void setRole(Role role) throws IllegalArgumentException, RoleNotFoundException, RelationTypeNotFoundException, InvalidRoleValueException, RelationServiceNotRegisteredException, RelationNotFoundException 设置给定的角色。将根据关系类型中提供的相应角色定义检查角色
将发送通知(RelationNotification,类型为RELATION_BASIC_UPDATE或RELATION_MBEAN_UPDATE,取决于关系是否为MBean)
- 指定由:
-
setRole
在接口Relation
中 - 参数:
-
role
- 要设置的角色(名称和新值) - 抛出:
-
IllegalArgumentException
- 如果角色为空 -
RoleNotFoundException
- 如果没有提供的角色名称的角色或者角色不可写(在初始化角色时未执行写访问模式测试) -
InvalidRoleValueException
- 如果为角色提供的值无效,即:- 给定值中引用的MBean数量少于预期的最小度
- 提供的值中引用的MBean数量超过预期的最大度
- 值中的一个引用的MBean不是该角色期望的MBean类的对象
- 为该角色提供的MBean不存在
-
RelationServiceNotRegisteredException
- 如果关系服务未在MBean服务器中注册 -
RelationTypeNotFoundException
- 如果关系类型未在关系服务中声明 -
RelationNotFoundException
- 如果关系未添加到关系服务中 - 参见:
-
setRoles
public RoleResult setRoles(RoleList list) throws IllegalArgumentException, RelationServiceNotRegisteredException, RelationTypeNotFoundException, RelationNotFoundException 设置给定的角色。将根据关系类型中提供的相应角色定义检查角色
将为每个更新的角色发送一个通知(RelationNotification,类型为RELATION_BASIC_UPDATE或RELATION_MBEAN_UPDATE,取决于关系是否为MBean)
- 指定由:
-
setRoles
在接口Relation
中 - 参数:
-
list
- 要设置的角色列表 - 返回:
- 一个RoleResult对象,包括一个RoleList(成功设置的角色)和一个RoleUnresolvedList(未设置的角色)。
- 抛出:
-
IllegalArgumentException
- 如果角色列表为空 -
RelationServiceNotRegisteredException
- 如果关系服务未在MBean服务器中注册 -
RelationTypeNotFoundException
- 如果关系类型未在关系服务中声明 -
RelationNotFoundException
- 如果关系MBean未添加到关系服务中 - 参见:
-
handleMBeanUnregistration
public void handleMBeanUnregistration(ObjectName objectName, String roleName) throws IllegalArgumentException, RoleNotFoundException, InvalidRoleValueException, RelationServiceNotRegisteredException, RelationTypeNotFoundException, RelationNotFoundException 当在角色中引用的MBean取消注册时,关系服务使用的回调。关系服务将调用此方法,以便关系采取行动以反映此取消注册的影响。
注意。不期望用户调用此方法。
当前实现是使用当前值设置角色(引用的MBeans的ObjectName列表),而不包括已取消注册的MBean。
- 指定由:
-
handleMBeanUnregistration
在接口Relation
中 - 参数:
-
objectName
- 已取消注册的MBean的ObjectName -
roleName
- 引用该MBean的角色名称 - 抛出:
-
IllegalArgumentException
- 如果参数为空 -
RoleNotFoundException
- 如果关系中不存在角色或者角色不可写 -
InvalidRoleValueException
- 如果角色值不符合关联的角色信息(当从关系服务调用时永远不会发生) -
RelationServiceNotRegisteredException
- 如果关系服务未在MBean服务器中注册 -
RelationTypeNotFoundException
- 如果关系类型未在关系服务中声明 -
RelationNotFoundException
- 如果为关系MBean未添加到关系服务中调用此方法
-
getReferencedMBeans
检索关系中各个角色中引用的MBeans。- 指定由:
-
getReferencedMBeans
在接口Relation
中 - 返回:
-
一个HashMap映射:
ObjectName -> String列表(角色名称)
-
getRelationTypeName
返回关联关系类型的名称。- 指定由:
-
getRelationTypeName
在接口Relation
中 - 返回:
- 关系类型的名称。
-
getRelationServiceName
返回处理关系的关系服务的ObjectName。- 指定由:
-
getRelationServiceName
在接口Relation
中 - 返回:
- 关系服务的ObjectName。
-
getRelationId
返回关系标识符(用于在关系服务内唯一标识关系)。- 指定由:
-
getRelationId
在接口Relation
中 - 返回:
- 关系ID。
-
preRegister
从接口复制的描述:MBeanRegistration
允许MBean在注册到MBean服务器之前执行其需要的任何操作。如果未指定MBean的名称,MBean可以为其注册提供名称。如果引发任何异常,MBean将不会在MBean服务器中注册。- 指定由:
-
preRegister
在接口MBeanRegistration
中 - 参数:
-
server
- 将注册MBean的MBean服务器。 -
name
- MBean的对象名称。如果在MBeanServer
接口的createMBean
或registerMBean
方法的名称参数为null,则此名称为null。在这种情况下,此方法必须返回新MBean的非null ObjectName。 - 返回:
-
MBean注册的名称。此值不能为空。如果
name
参数不为null,则通常但不一定会是返回的值。 - 抛出:
-
Exception
- 此异常将被MBean服务器捕获并重新抛出为MBeanRegistrationException
。
-
postRegister
从接口复制的描述:MBeanRegistration
允许MBean在注册到MBean服务器后或注册失败后执行所需的任何操作。如果此方法的实现引发
RuntimeException
或Error
,MBean服务器将在RuntimeMBeanException
或RuntimeErrorException
中重新抛出这些异常。但是,在postRegister
中抛出异常不会更改MBean的状态:如果MBean已经注册(registrationDone
为true
),则MBean将保持注册状态。对于调用
createMBean()
或registerMBean()
的代码可能会感到困惑,因为这样的异常被引发时,此类代码可能会假定MBean注册失败。因此,建议postRegister
的实现尽量避免抛出运行时异常或错误。- 指定由:
-
postRegister
在接口MBeanRegistration
中 - 参数:
-
registrationDone
- 指示MBean是否已成功在MBean服务器中注册。值为false表示注册阶段失败。
-
preDeregister
从接口复制的描述:MBeanRegistration
允许MBean在被MBean服务器注销之前执行其需要的任何操作。- 指定由:
-
preDeregister
在接口MBeanRegistration
中 - 抛出:
-
Exception
- 此异常将被MBean服务器捕获并重新抛出为MBeanRegistrationException
。
-
postDeregister
public void postDeregister()从接口复制的描述:MBeanRegistration
允许MBean在从MBean服务器中注销后执行所需的任何操作。如果此方法的实现引发
RuntimeException
或Error
,MBean服务器将在RuntimeMBeanException
或RuntimeErrorException
中重新抛出这些异常。但是,在postDeregister
中抛出异常不会更改MBean的状态:MBean已成功注销并将保持注销状态。对于调用
unregisterMBean()
的代码可能会感到困惑,因为它可能会假定MBean注销失败。因此,建议postDeregister
的实现尽量避免抛出运行时异常或错误。- 指定由:
-
postDeregister
在接口MBeanRegistration
中
-
isInRelationService
返回一个内部标志,指定对象是否仍由关系服务处理。- 指定由:
-
isInRelationService
在接口RelationSupportMBean
中 - 返回:
-
如果对象仍由关系服务处理,则返回等于
Boolean.TRUE
的布尔值,否则返回Boolean.FALSE
。
-
setRelationServiceManagementFlag
从接口复制的描述:RelationSupportMBean
指定此关系是否由关系服务处理。
注意,此方法必须公开,因为关系服务将通过其管理接口访问关系。建议不要使用此方法。使用它不会影响关系对象在关系服务中的注册,但会提供有关其错误信息!
- 指定由:
-
setRelationServiceManagementFlag
在接口RelationSupportMBean
中 - 参数:
-
flag
- 关系是否由关系服务处理。 - 抛出:
-
IllegalArgumentException
- 如果参数为null
-