java.lang.Object javax.management.relation.RelationSupport
public class RelationSupport
RelationSupport 对象由 Relation Service 内部使用,表示任何关系型的具有不限数量的角色的简单关系(只有角色,没有属性或方法)。作为内部表示形式,不会向用户公开它。
RelationSupport 类遵循标准的 MBean 设计模式。因此,用户可以决定将 RelationSupport 对象本身实例化为 MBean(因为它遵循 MBean 设计模式),以便在 MBean Server 中注册,然后将其添加到 Relation Service 中。
用户还可以在创建自己的 MBean 关系类时让其扩展 RelationSupport,以检索所需接口的实现(请参见下面内容)。
它还可以在用户关系 MBean 类中让一个成员成为 RelationSupport 对象,并通过将所有接口委托给此成员来实现所需接口。
RelationSupport 实现 Relation 接口(将由 Relation Service 处理)。
它还实现 MBeanRegistration 接口,以便能够检索它在其中注册的 MBean Server(如果注册为 MBean),从而访问其 Relation Service。
构造方法摘要 | |
---|---|
RelationSupport(String relationId, ObjectName relationServiceName, MBeanServer relationServiceMBeanServer, String relationTypeName, RoleList list) 创建一个 RelationSupport 对象。 |
|
RelationSupport(String relationId, ObjectName relationServiceName, 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 处理的内部标志。 |
void |
postDeregister() 允许 MBean 在已从 MBean 服务器注销之后执行所需要的任何操作。 |
void |
postRegister(Boolean registrationDone) 允许 MBean 在被注册到 MBean 服务器或注销失败后执行任何所需要的操作。 |
void |
preDeregister() 允许该 MBean 在从 MBean 服务器注销之前执行它所需要的任何操作。 |
ObjectName |
preRegister(MBeanServer server, ObjectName name) 允许 MBean 在被注册到 MBean 服务器之前执行它所需要的任何操作。 |
RoleList |
retrieveAllRoles() 返回关系中的所有角色,不检查读取模式。 |
void |
setRelationServiceManagementFlag(Boolean flag) 指定此关系是否由 Relation Service 处理。 |
void |
setRole(Role role) 设置给定的角色。 |
RoleResult |
setRoles(RoleList list) 设置给定的角色。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public RelationSupport(String relationId, ObjectName relationServiceName, String relationTypeName, RoleList list) throws InvalidRoleValueException, IllegalArgumentException
RelationSupport
对象。
在用户要将 RelationSupport 对象注册为 MBean 时,或者在创建扩展 RelationSupport 的用户关系 MBean 类时,必须使用此构造方法。
在 Relation Service 级别不执行任何操作,既不向 RelationService
添加 RelationSupport
对象,也不查看提供的值是否正确。始终创建该对象,除以下情况外:
- 任何所需的参数为 null
。
- 两个角色使用了同一名称。
为了将该对象作为关系处理,务必使用 Relation Service 方法 addRelation() 将 RelationSupport
对象添加到 Relation Service 中。
relationId
- 关系标识符,用来在 Relation Service 中标识关系。
期望在给定的 Relation Service 中唯一。
relationServiceName
- 将在其中注册关系的 Relation Service 的 ObjectName。
此参数是必需的,因为这是知道给定关系的关系类型定义的 Relation Service,所以将能够检查更新操作(集)。
relationTypeName
- 关系类型的名称。
期望已在给定的 Relation Service 中创建。
list
- 要初始化关系的角色(Role 对象)的列表。可以为
null
。
期望遵循相关关系类型中的关系信息。
InvalidRoleValueException
- 如果两个角色使用了同一个名称。
IllegalArgumentException
- 如果任何所需参数(关系 id、关系服务 ObjectName、关系服务 MBeanServer 或者关系类型名称)为
null
。
public RelationSupport(String relationId, ObjectName relationServiceName, MBeanServer relationServiceMBeanServer, String relationTypeName, RoleList list) throws InvalidRoleValueException, IllegalArgumentException
RelationSupport
对象。
在用户关系 MBean 实现期望通过委托给 RelationSupport 对象受关系支持的接口时,务必使用此构造方法。
此对象需要知道期望处理该关系的 Relation Service。所以它必须知道 Relation Service 在其中注册的 MBean Server。
按照限制,必须像期望处理它的 Relation Service 一样在同一 MBean Server 中注册关系 MBean。所以必须创建并注册用户关系 MBean,然后可以使用标识的 MBean Server 创建包装的 RelationSupport 对象。
在 Relation Service 级别不执行任何操作,既不向 RelationService
添加 RelationSupport
对象,也不查看提供的值是否正确。始终创建该对象,除以下情况外:
- 任何所需的参数为 null
。
- 两个角色使用了同一个名称。
为了将该对象作为关系处理,务必使用 Relation Service 方法 addRelation() 将 RelationSupport
对象添加到 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 或者关系类型名称)为
null
。
方法详细信息 |
---|
public List<ObjectName> getRole(String roleName) throws IllegalArgumentException, RoleNotFoundException, RelationServiceNotRegisteredException
按照关系类型检查角色是否存在以及是否可读。
roleName
- 角色名称
IllegalArgumentException
- 如果为 null 角色名称
RoleNotFoundException
- 如果:
- 不存在具有给定名称的角色
- 角色不可读。
RelationServiceNotRegisteredException
- 如果 Relation Service 未在 MBean Server 中注册
setRole(javax.management.relation.Role)
public RoleResult getRoles(String[] roleNameArray) throws IllegalArgumentException, RelationServiceNotRegisteredException
按照关系类型检查每个角色是否存在以及是否可读。
roleNameArray
- 要检索的角色名称的数组
IllegalArgumentException
- 如果角色名称为 null
RelationServiceNotRegisteredException
- 如果 Relation Service 未在 MBean Server 中注册。
setRoles(javax.management.relation.RoleList)
public RoleResult getAllRoles() throws RelationServiceNotRegisteredException
Relation
中的
getAllRoles
RelationServiceNotRegisteredException
- 如果 Relation Service 未在 MBean Server 中注册
public RoleList retrieveAllRoles()
Relation
中的
retrieveAllRoles
public Integer getRoleCardinality(String roleName) throws IllegalArgumentException, RoleNotFoundException
Relation
中的
getRoleCardinality
roleName
- 角色名称
IllegalArgumentException
- 如果角色名称为 null
RoleNotFoundException
- 如果不存在具有给定名称的角色
public void setRole(Role role) throws IllegalArgumentException, RoleNotFoundException, RelationTypeNotFoundException, InvalidRoleValueException, RelationServiceNotRegisteredException, RelationNotFoundException
将按照其在关系的关系类型中提供的相应角色定义检查角色
将发送通知(带类型 RELATION_BASIC_UPDATE 或 RELATION_MBEAN_UPDATE 的 RelationNotification,具体取决于该关系是否为 MBean)
role
- 要设置的角色(名称和新值)
IllegalArgumentException
- 如果角色是 null
RoleNotFoundException
- 如果不存在具有指定名称的角色,或者该角色不可写该角色不可写(初始化角色时未执行写入访问模式测试)
InvalidRoleValueException
- 如果为角色提供的值无效,即
- 给定值中引用的 MBean 数小于期望的最小程度
- 提供的值中引用的 MBean 数超过期望的最大程度
- 该值中引用的 MBean 的一个对象不是该角色期望的 MBean 类的对象
- 不存在为该角色提供的 MBean
RelationServiceNotRegisteredException
- 如果 Relation Service 未在 MBean Server 中注册
RelationTypeNotFoundException
- 如果尚未在 Relation Service 中声明该关系类型
RelationNotFoundException
- 如果尚未在 Relation Service 中添加关系。
getRole(java.lang.String)
public RoleResult setRoles(RoleList list) throws IllegalArgumentException, RelationServiceNotRegisteredException, RelationTypeNotFoundException, RelationNotFoundException
将按照其在关系的关系类型中提供的相应角色定义检查角色。
每个更新的角色将发送一个通知(带类型 RELATION_BASIC_UPDATE 或 RELATION_MBEAN_UPDATE 的 RelationNotification,具体取决于该关系是否为 MBean)。
list
- 要设置的角色列表
IllegalArgumentException
- 如果角色列表为 null
RelationServiceNotRegisteredException
- 如果 Relation Service 未在 MBean Server 中注册
RelationTypeNotFoundException
- 如果在 Relation Service 中尚未声明该关系类型。
RelationNotFoundException
- 如果尚未在 Relation Service 中添加关系 MBean。
getRoles(java.lang.String[])
public void handleMBeanUnregistration(ObjectName objectName, String roleName) throws IllegalArgumentException, RoleNotFoundException, InvalidRoleValueException, RelationServiceNotRegisteredException, RelationTypeNotFoundException, RelationNotFoundException
Relation Service 将调用此方法,以让该关系采取行动来反映这种注销的影响。
小心,不要期望用户调用此方法。
当前实现是为了用其当前值(引用的 MBean 的 ObjectName 列表)而不用注销的值设置角色。
Relation
中的
handleMBeanUnregistration
objectName
- 注销的 MBean 的 ObjectName
roleName
- 在其中引用 MBean 的角色名称
IllegalArgumentException
- 如果参数为 null
RoleNotFoundException
- 如果角色不在关系中或不可写
InvalidRoleValueException
- 如果角色值不遵循相关角色信息(这永远不会在从 Relation Service 中调用时发生)
RelationServiceNotRegisteredException
- 如果 Relation Service 未在 MBean Server 注册
RelationTypeNotFoundException
- 如果在 Relation Service 中尚未声明该关系类型。
RelationNotFoundException
- 如果未在 Relation Service 中添加的关系 MBean 调用此方法。
public Map<ObjectName,List<String>> getReferencedMBeans()
Relation
中的
getReferencedMBeans
ObjectName -> String 的 ArrayList(角色名)
public String getRelationTypeName()
Relation
中的
getRelationTypeName
public ObjectName getRelationServiceName()
Relation
中的
getRelationServiceName
public String getRelationId()
Relation
中的
getRelationId
public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception
MBeanRegistration
复制的描述
MBeanRegistration
中的
preRegister
server
- 将要在其中注册该 MBean 的 MBean 服务器。
name
- 该 MBean 的对象名。如果
MBeanServer
接口中的某个
createMBean
方法或
registerMBean
方法的 name 参数为 null,则此 name 也为 null。在这种情况下,此方法必须为新 MBean 返回非 null 的 ObjectName。
name
参数不为 null,则它通常但并非一定为返回值。
Exception
- MBean 服务器会捕捉此异常并以
MBeanRegistrationException
的形式重新抛出。
public void postRegister(Boolean registrationDone)
MBeanRegistration
复制的描述
MBeanRegistration
中的
postRegister
registrationDone
- 指示该 MBean 是否已在 MBean 服务器中成功注册。false 值意味着注册阶段已失败。
public void preDeregister() throws Exception
MBeanRegistration
复制的描述
MBeanRegistration
中的
preDeregister
Exception
- MBean 服务器会捕捉此异常并以
MBeanRegistrationException
的形式重新抛出。
public void postDeregister()
MBeanRegistration
复制的描述
MBeanRegistration
中的
postDeregister
public Boolean isInRelationService()
RelationSupportMBean
中的
isInRelationService
Boolean.TRUE
的 Boolean 值;否则,返回等于
Boolean.FALSE
的 Boolean 值。
public void setRelationServiceManagementFlag(Boolean flag) throws IllegalArgumentException
RelationSupportMBean
复制的描述
指定此关系是否由 Relation Service 处理。
注意,当 Relation Service 通过其管理接口访问该关系时,此方法必须公开。强烈建议不要使用此方法。使用此方法不影响 Relation Service 中的关系对象的注册,但会提供有关它的错误信息!
flag
- 该关系是否由 Relation Service 处理的标志。
IllegalArgumentException
- 如果是 null 参数