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