- java.lang.Object
-
- javax.management.relation.RelationSupport
-
- 实现的所有接口
-
MBeanRegistration
,Relation
,RelationSupportMBean
public class RelationSupport extends Object implements RelationSupportMBean, MBeanRegistration
RelationSupport对象在内部由Relation Service使用,用于表示任何关系类型的具有无限数量角色的简单关系(仅角色,无属性或方法)。 作为内部表示,它不会暴露给用户。RelationSupport类符合标准MBean的设计模式。 因此,用户可以决定将RelationSupport对象本身实例化为MBean(因为它遵循MBean设计模式),将其注册到MBean Server中,然后将其添加到Relation Service中。
在创建自己的MBean关系类时,用户还可以扩展RelationSupport,以检索所需接口的实现(参见下文)。
还可以在用户关系MBean类中具有作为RelationSupport对象的成员,并通过将all委托给该成员来实现所需的接口。
RelationSupport实现Relation接口(由Relation Service处理)。
它还实现了MBeanRegistration接口,以便能够检索注册它的MBean Server(如果注册为MBean)以访问其Relation Service。
- 从以下版本开始:
- 1.5
-
-
构造方法摘要
构造方法 构造器 描述 RelationSupport(String relationId, ObjectName relationServiceName, String relationTypeName, RoleList list)
创建RelationSupport
对象。RelationSupport(String relationId, ObjectName relationServiceName, MBeanServer relationServiceMBeanServer, String relationTypeName, RoleList list)
创建RelationSupport
对象。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 RoleResult
getAllRoles()
返回关系中存在的所有角色。Map<ObjectName,List<String>>
getReferencedMBeans()
检索在关系的各种角色中引用的MBean。String
getRelationId()
返回关系标识符(用于唯一标识Relation Service内的关系)。ObjectName
getRelationServiceName()
返回处理关系的Relation Service的ObjectName。String
getRelationTypeName()
返回关联关系类型的名称。List<ObjectName>
getRole(String roleName)
检索给定角色名称的角色值。Integer
getRoleCardinality(String roleName)
返回给定角色中当前引用的MBean数。RoleResult
getRoles(String[] roleNameArray)
检索具有给定名称的角色的值。void
handleMBeanUnregistration(ObjectName objectName, String roleName)
当取消注册角色中引用的MBean时,Relation Service使用的回调。Boolean
isInRelationService()
返回一个内部标志,指定对象是否仍由Relation Service处理。RoleList
retrieveAllRoles()
返回关系中的所有角色而不检查读取模式。void
setRole(Role role)
设置给定角色。RoleResult
setRoles(RoleList list)
设置给定的角色。-
声明方法的类 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
声明方法的接口 javax.management.MBeanRegistration
postDeregister, postRegister, preDeregister, preRegister
-
声明方法的接口 javax.management.relation.RelationSupportMBean
setRelationServiceManagementFlag
-
-
-
-
构造方法详细信息
-
RelationSupport
public RelationSupport(String relationId, ObjectName relationServiceName, String relationTypeName, RoleList list) throws InvalidRoleValueException, IllegalArgumentException
创建RelationSupport
对象。当RelationSupport对象将由用户注册为MBean时,或者在创建其类扩展为RelationSupport的用户关系MBean时,必须使用此构造函数。
在Relation Service级别没有任何操作,即
RelationSupport
对象未添加到RelationService
并且不执行任何检查以查看提供的值是否正确。 始终创建对象,除非:- 任何所需参数是
null
。- 两个角色使用相同的名称。
要作为关系处理,必须使用Relation Service方法addRelation()将
RelationSupport
对象添加到Relation Service。- 参数
-
relationId
- 关系标识符,用于标识Relation Service中的关系。预计在给定的Relation Service中是唯一的。
-
relationServiceName
- 将在其中注册关系的Relation Service的ObjectName。此参数是必需的,因为它是了解给定关系的关系类型定义的Relation Service,因此可以检查更新操作(set)。
-
relationTypeName
- 关系类型的名称。预计已在给定的Relation Service中创建。
-
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对象实现期望由关系支持的接口时,必须使用此构造函数。
此对象需要知道期望处理关系的Relation Service。 因此,它必须知道注册Relation Service的MBean Server。
根据限制,关系MBean必须在与期望处理它的Relation Service相同的MBean Server中注册。 因此,必须创建和注册用户关系MBean,然后可以在标识的MBean Server中创建包装的RelationSupport对象。
在Relation Service级别没有任何操作,即
RelationSupport
对象未添加到RelationService
并且不执行任何检查以查看提供的值是否正确。 始终创建对象,除非:- 任何所需参数是
null
。- 两个角色使用相同的名称。
要作为关系处理,必须使用Relation Service方法addRelation()将
RelationSupport
对象添加到Relation Service。- 参数
-
relationId
- 关系标识符,用于标识Relation Service中的关系。预计在给定的Relation Service中是唯一的。
-
relationServiceName
- 将注册关系的Relation Service的ObjectName。此参数是必需的,因为它是了解给定关系的关系类型定义的Relation Service,因此可以检查更新操作(set)。
-
relationServiceMBeanServer
- 将要或将要注册包装MBean的MBean Server。期望是将要或将要注册Relation Service的MBean服务器。
-
relationTypeName
- 关系类型的名称。预计已在给定的Relation Service中创建。
-
list
- 初始化关系的角色列表(角色对象)。 可以是null
。期望符合关联关系类型中的关系信息。
- 异常
-
InvalidRoleValueException
- 如果两个角色使用相同的名称。 -
IllegalArgumentException
- 如果任何必需参数(关系id,关系服务ObjectName,关系服务MBeanServer或关系类型名称)是null
。
-
-
方法详细信息
-
getRole
public List<ObjectName> getRole(String roleName) throws IllegalArgumentException, RoleNotFoundException, RelationServiceNotRegisteredException
检索给定角色名称的角色值。根据关系类型检查角色是否存在且可读。
- Specified by:
-
getRole
,接口Relation
- 参数
-
roleName
- 角色名称 - 结果
- ObjectName对象的ArrayList是角色值
- 异常
-
IllegalArgumentException
- 如果为null角色名称 -
RoleNotFoundException
- 如果:- 给定名称没有任何作用
- 角色不可读。
-
RelationServiceNotRegisteredException
- 如果未在MBean Server中注册Relation Service - 另请参见:
-
setRole(javax.management.relation.Role)
-
getRoles
public RoleResult getRoles(String[] roleNameArray) throws IllegalArgumentException, RelationServiceNotRegisteredException
检索具有给定名称的角色的值。检查每个角色是否存在,并根据关系类型进行读取。
- Specified by:
-
getRoles
,接口Relation
- 参数
-
roleNameArray
- 要检索的角色名称数组 - 结果
- RoleResult对象,包括RoleList(用于成功检索的角色)和RoleUnresolvedList(用于未检索的角色)。
- 异常
-
IllegalArgumentException
- 如果为null角色名称 -
RelationServiceNotRegisteredException
- 如果未在MBean Server中注册Relation Service - 另请参见:
-
setRoles(javax.management.relation.RoleList)
-
getAllRoles
public RoleResult getAllRoles() throws RelationServiceNotRegisteredException
返回关系中存在的所有角色。- Specified by:
-
getAllRoles
接口Relation
- 结果
- RoleResult对象,包括RoleList(用于成功检索的角色)和RoleUnresolvedList(用于不可读的角色)。
- 异常
-
RelationServiceNotRegisteredException
- 如果未在MBean Server中注册Relation Service
-
retrieveAllRoles
public RoleList retrieveAllRoles()
返回关系中的所有角色而不检查读取模式。- Specified by:
-
retrieveAllRoles
,接口Relation
- 结果
- 一个RoleList
-
getRoleCardinality
public Integer getRoleCardinality(String roleName) throws IllegalArgumentException, RoleNotFoundException
返回给定角色中当前引用的MBean数。- Specified by:
-
getRoleCardinality
in interfaceRelation
- 参数
-
roleName
- 角色名称 - 结果
- 该角色中当前引用的MBean的数量
- 异常
-
IllegalArgumentException
- 如果为null角色名称 -
RoleNotFoundException
- 如果没有给定名称的角色
-
setRole
public void setRole(Role role) throws IllegalArgumentException, RoleNotFoundException, RelationTypeNotFoundException, InvalidRoleValueException, RelationServiceNotRegisteredException, RelationNotFoundException
设置给定角色。将根据关系的关系类型中提供的相应角色定义来检查角色
将发送通知(RelationNotification类型为RELATION_BASIC_UPDATE或RELATION_MBEAN_UPDATE,具体取决于关系是否为MBean)。
- Specified by:
-
setRole
在接口Relation
- 参数
-
role
- 要设置的角色(名称和新值) - 异常
-
IllegalArgumentException
- 如果为null角色 -
RoleNotFoundException
- 如果提供的角色名称没有角色,或者角色不可写(初始化角色时未对写入访问模式进行测试) -
InvalidRoleValueException
- 如果为角色提供的值无效,即:- 给定值中引用的MBean数小于预期的最小程度
- 提供值中引用的MBean数超过预期的最大程度
- 值中一个引用的MBean不是该角色所期望的MBean类的Object
- 不存在为该角色提供的MBean
-
RelationServiceNotRegisteredException
- 如果未在MBean Server中注册Relation Service -
RelationTypeNotFoundException
- 如果尚未在Relation Service中声明关系类型 -
RelationNotFoundException
- 如果尚未在Relation Service中添加关系。 - 另请参见:
-
getRole(java.lang.String)
-
setRoles
public RoleResult setRoles(RoleList list) throws IllegalArgumentException, RelationServiceNotRegisteredException, RelationTypeNotFoundException, RelationNotFoundException
设置给定的角色。将根据关系的关系类型中提供的相应角色定义来检查角色
每个更新的角色将发送一个通知(RelationNotification类型为RELATION_BASIC_UPDATE或RELATION_MBEAN_UPDATE,具体取决于关系是否为MBean)。
- Specified by:
-
setRoles
,接口Relation
- 参数
-
list
- 要设置的角色列表 - 结果
- RoleResult对象,包括RoleList(用于成功设置的角色)和RoleUnresolvedList(用于未设置的角色)。
- 异常
-
IllegalArgumentException
- 如果为null角色列表 -
RelationServiceNotRegisteredException
- 如果未在MBean Server中注册Relation Service -
RelationTypeNotFoundException
- 如果尚未在Relation Service中声明关系类型。 -
RelationNotFoundException
- 如果尚未在Relation Service中添加关系MBean。 - 另请参见:
-
getRoles(java.lang.String[])
-
handleMBeanUnregistration
public void handleMBeanUnregistration(ObjectName objectName, String roleName) throws IllegalArgumentException, RoleNotFoundException, InvalidRoleValueException, RelationServiceNotRegisteredException, RelationTypeNotFoundException, RelationNotFoundException
当取消注册角色中引用的MBean时,Relation Service使用的回调。Relation Service将调用此方法让关系采取措施以反映此类注销的影响。
谨防。 不希望用户调用此方法。
当前实现是使用其当前值(引用的MBean的ObjectNames列表)设置角色,而不使用未注册的角色。
- Specified by:
-
handleMBeanUnregistration
,接口Relation
- 参数
-
objectName
- 未注册的MBean的ObjectName -
roleName
- 引用MBean的角色的名称 - 异常
-
IllegalArgumentException
- 如果为null参数 -
RoleNotFoundException
- 如果关系中不存在角色或者不可写 -
InvalidRoleValueException
- 如果角色值不符合关联的角色信息(从Relation Service调用时永远不会发生这种情况) -
RelationServiceNotRegisteredException
- 如果未在MBean Server中注册Relation Service -
RelationTypeNotFoundException
- 如果尚未在Relation Service中声明关系类型。 -
RelationNotFoundException
- 如果为未在Relation Service中添加的关系MBean调用此方法。
-
getReferencedMBeans
public Map<ObjectName,List<String>> getReferencedMBeans()
检索在关系的各种角色中引用的MBean。- Specified by:
-
getReferencedMBeans
in interfaceRelation
- 结果
-
一个HashMap映射:
ObjectName - > String的StringList(角色名称)
-
getRelationTypeName
public String getRelationTypeName()
返回关联关系类型的名称。- Specified by:
-
getRelationTypeName
,接口Relation
- 结果
- 关系类型的名称。
-
getRelationServiceName
public ObjectName getRelationServiceName()
返回处理关系的Relation Service的ObjectName。- Specified by:
-
getRelationServiceName
在接口Relation
- 结果
- Relation Service的ObjectName。
-
getRelationId
public String getRelationId()
返回关系标识符(用于唯一标识Relation Service内的关系)。- Specified by:
-
getRelationId
,界面Relation
- 结果
- 关系id。
-
isInRelationService
public Boolean isInRelationService()
返回一个内部标志,指定对象是否仍由Relation Service处理。- Specified by:
-
isInRelationService
,接口RelationSupportMBean
- 结果
-
等于一个布尔
Boolean.TRUE
如果该对象是否仍然由Relation Service和处理Boolean.FALSE
否则。
-
-