public interface RelationServiceMBean
Relation Service 负责创建和删除关系类型和关系,还负责处理一致性和提供查询机制。
方法摘要 | |
---|---|
void |
addRelation(ObjectName relationObjectName) 作为 Relation Service 中的关系添加由用户创建(且由其在 MBean Server 中注册)的 MBean。 |
void |
addRelationType(RelationType relationTypeObj) 作为关系类型添加给定的对象。 |
Integer |
checkRoleReading(String roleName, String relationTypeName) 检查给定 Role 能否在给定类型的关系中读取。 |
Integer |
checkRoleWriting(Role role, String relationTypeName, Boolean initFlag) 检查给定 Role 能否在给定类型的关系中设置。 |
void |
createRelation(String relationId, String relationTypeName, RoleList roleList) 创建给定关系类型的简单关系(由 RelationSupport 对象表示),并将其添加到 Relation Service 中。 |
void |
createRelationType(String relationTypeName, RoleInfo[] roleInfoArray) 用给定的角色信息(由 RoleInfo 对象提供)创建一个关系类型(RelationTypeSupport 对象),并将其添加到 Relation Service 中。 |
Map<ObjectName,List<String>> |
findAssociatedMBeans(ObjectName mbeanName, String relationTypeName, String roleName) 检索与关系中给定关系相关的 MBean。 |
Map<String,List<String>> |
findReferencingRelations(ObjectName mbeanName, String relationTypeName, String roleName) 检索在其中引用给定 MBean 的关系。 |
List<String> |
findRelationsOfType(String relationTypeName) 返回给定类型的关系的关系 id。 |
List<String> |
getAllRelationIds() 返回由 Relation Service 处理的所有关系的所有关系 id。 |
List<String> |
getAllRelationTypeNames() 检索所有已知关系类型的名称。 |
RoleResult |
getAllRoles(String relationId) 返回关系中存在的所有角色。 |
boolean |
getPurgeFlag() 返回一个标志,以指示注销关系中引用的 MBean 时是否接收到通知,是否必须执行关系的直接“肃清”(查找不再有效的关系),或者是否只在显式调用 purgeRelations 方法时执行该操作。 |
Map<ObjectName,List<String>> |
getReferencedMBeans(String relationId) 检索关系的各种角色中引用的 MBean。 |
String |
getRelationTypeName(String relationId) 返回给定关系的相关关系类型的名称。 |
List<ObjectName> |
getRole(String relationId, String roleName) 检索给定关系中给定角色名称的角色值。 |
Integer |
getRoleCardinality(String relationId, String roleName) 检索给定角色中当前引用的 MBean 数。 |
RoleInfo |
getRoleInfo(String relationTypeName, String roleInfoName) 检索给定关系类型的给定角色的角色信息。 |
List<RoleInfo> |
getRoleInfos(String relationTypeName) 检索给定关系类型的角色信息(RoleInfo 对象)的列表。 |
RoleResult |
getRoles(String relationId, String[] roleNameArray) 检索给定关系中具有给定名称的角色值。 |
Boolean |
hasRelation(String relationId) 用给定的关系 id 检查是否存在 Relation Service 中标识的关系。 |
void |
isActive() 检查该 Relation Service 是否处于活动状态。 |
String |
isRelation(ObjectName objectName) 如果 Relation Service 中作为关系添加 MBean,则返回与给定 ObjectName 相关的关系 id。 |
ObjectName |
isRelationMBean(String relationId) 如果用 MBean 表示关系(由用户创建且作为 Relation Service 中的关系添加),则返回该 MBean 的 ObjectName。 |
void |
purgeRelations() 肃清关系。 |
void |
removeRelation(String relationId) 从 Relation Service 移除给定的关系。 |
void |
removeRelationType(String relationTypeName) 从 Relation Service 中移除给定的关系类型。 |
void |
sendRelationCreationNotification(String relationId) 发送关系创建通知 (RelationNotification)。 |
void |
sendRelationRemovalNotification(String relationId, List<ObjectName> unregMBeanList) 发送关系移除通知 (RelationNotification)。 |
void |
sendRoleUpdateNotification(String relationId, Role newRole, List<ObjectName> oldRoleValue) 发送给定关系中的角色更新通知 (RelationNotification)。 |
void |
setPurgeFlag(boolean purgeFlag) 设置一个标志,以指示注销关系中引用的 MBean 时是否接收到通知,是否必须执行关系的直接“肃清”(查找不再有效的关系),或者是否只在显式调用 purgeRelations 方法时执行该操作。 |
void |
setRole(String relationId, Role role) 以给定关系设置给定角色。 |
RoleResult |
setRoles(String relationId, RoleList roleList) 以给定关系设置给定角色。 |
void |
updateRoleMap(String relationId, Role newRole, List<ObjectName> oldRoleValue) 针对给定关系中给定角色的更新来处理 Relation Service 角色映射的更新。 |
方法详细信息 |
---|
void isActive() throws RelationServiceNotRegisteredException
RelationServiceNotRegisteredException
- 如果尚未注册 Relation Service
boolean getPurgeFlag()
true 表示立即肃清。
setPurgeFlag(boolean)
void setPurgeFlag(boolean purgeFlag)
true 表示立即肃清。
purgeFlag
- 标志
getPurgeFlag()
void createRelationType(String relationTypeName, RoleInfo[] roleInfoArray) throws IllegalArgumentException, InvalidRelationTypeException
relationTypeName
- 关系类型的名称
roleInfoArray
- 角色信息的数组
IllegalArgumentException
- 如果参数为 null
InvalidRelationTypeException
- 如果:
- 具有该名称的关系类型已经存在
- 两个不同的角色信息使用了同一个名称
- 未提供角色信息
- 提供了一个 null 角色信息
void addRelationType(RelationType relationTypeObj) throws IllegalArgumentException, InvalidRelationTypeException
relationTypeObj
- 关系类型对象(实现该 RelationType 接口)
IllegalArgumentException
- 如果参数为 null或者
relationTypeObj.getRelationTypeName()
返回 null。
InvalidRelationTypeException
- 如果已经存在具有该名称的关系类型
List<String> getAllRelationTypeNames()
List<RoleInfo> getRoleInfos(String relationTypeName) throws IllegalArgumentException, RelationTypeNotFoundException
relationTypeName
- 关系类型的名称
IllegalArgumentException
- 如果参数为 null
RelationTypeNotFoundException
- 如果不存在具有该名称的关系类型。
RoleInfo getRoleInfo(String relationTypeName, String roleInfoName) throws IllegalArgumentException, RelationTypeNotFoundException, RoleInfoNotFoundException
relationTypeName
- 关系类型的名称
roleInfoName
- 角色的名称
IllegalArgumentException
- 如果参数为 null
RelationTypeNotFoundException
- 如果在 Relation Service 中的关系类型未知
RoleInfoNotFoundException
- 如果该角色不是该关系类型的一部分。
void removeRelationType(String relationTypeName) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationTypeNotFoundException
此类型的关系对象将从 Relation Service 中移除。
relationTypeName
- 要移除的关系类型名称
RelationServiceNotRegisteredException
- 如果 Relation Service 未在 MBean Server 中注册
IllegalArgumentException
- 如果参数为 null
RelationTypeNotFoundException
- 如果不存在具有该名称的关系类型
void createRelation(String relationId, String relationTypeName, RoleList roleList) throws RelationServiceNotRegisteredException, IllegalArgumentException, RoleNotFoundException, InvalidRelationIdException, RelationTypeNotFoundException, InvalidRoleValueException
按照在参数中提供的角色列表初始化角色。将未按此方法初始化的角色设置为 ObjectName 的空 ArrayList。
发送带类型 RELATION_BASIC_CREATION 的 RelationNotification。
relationId
- 关系标识符,用来唯一地标识 Relation Service 中的关系
relationTypeName
- 关系类型的名称(必须在 Relation Service 中创建)
roleList
- 要初始化该关系的角色的角色列表(可以为 null)。
RelationServiceNotRegisteredException
- 如果 Relation Service 未在 MBean Server 中注册
IllegalArgumentException
- 如果参数为 null
RoleNotFoundException
- 如果为关系类型中不存在的角色提供值
InvalidRelationIdException
- 如果关系 id 已经使用
RelationTypeNotFoundException
- 如果在 Relation Service 中关系类型是未知的
InvalidRoleValueException
- 如果:
- 两个不同的角色使用了同一个角色名称
- 给定值中引用的 MBean 数小于期望的最小程度
- 提供的值中引用的 MBean 数超过期望的最大程度
- 该值中引用的 MBean 的一个对象不是该角色期望的 MBean 类的对象
- 如果不存在为该角色提供的 MBean
void addRelation(ObjectName relationObjectName) throws IllegalArgumentException, RelationServiceNotRegisteredException, NoSuchMethodException, InvalidRelationIdException, InstanceNotFoundException, InvalidRelationServiceException, RelationTypeNotFoundException, RoleNotFoundException, InvalidRoleValueException
要作为关系添加 MBean,其必须遵循以下做法:
- 实现该 Relation 接口
- 具有 RelationService ObjectName,即当前 Relation Service 的 ObjectName
- 具有在当前 Relation Service 中唯一且未使用的关系 id
- 具有关系类型,即在 Relation Service 中创建的关系类型
- 具有遵循在关系类型中提供的角色信息的角色。
relationObjectName
- 要添加的关系 MBean 的 ObjectName。
IllegalArgumentException
- 如果参数为 null
RelationServiceNotRegisteredException
- 如果 Relation Service 未在 MBean Server 中注册
NoSuchMethodException
- 如果 MBean 未实现 Relation 接口
InvalidRelationIdException
- 如果:
- MBean 中没有关系标识符
- 在 Relation Service 中已经使用关系标识符
InstanceNotFoundException
- 如果尚未注册给定 ObjectName 的 MBean
InvalidRelationServiceException
- 如果:
- MBean 中没有 Relation Service 名称
- MBean 中的 Relation Service 名称不是当前 Relation Service 的名称
RelationTypeNotFoundException
- 如果:
- MBean 中没有关系类型名称
- MBean 中的关系类型名称与 Relation Service 中创建的关系类型不对应
InvalidRoleValueException
- 如果:
- 角色中引用的 MBean 数小于期望的最小程度
- 角色中引用的 MBean 数超过期望的最大程度
- 该值中引用的 MBean 的一个对象不是该角色期望的 MBean 类的对象
- 为角色提供的 MBean 不存在
RoleNotFoundException
- 如果为关系类型中不存在的角色提供了值
ObjectName isRelationMBean(String relationId) throws IllegalArgumentException, RelationNotFoundException
relationId
- 标识关系的关系 id
IllegalArgumentException
- 如果参数为 null
RelationNotFoundException
- 如果不存在与该 id 相关的关系
String isRelation(ObjectName objectName) throws IllegalArgumentException
objectName
- 假定关系的 ObjectName
IllegalArgumentException
- 如果参数为 null
Boolean hasRelation(String relationId) throws IllegalArgumentException
relationId
- 标识关系的关系 id
IllegalArgumentException
- 如果参数为 null
List<String> getAllRelationIds()
Integer checkRoleReading(String roleName, String relationTypeName) throws IllegalArgumentException, RelationTypeNotFoundException
roleName
- 要检查的角色名称
relationTypeName
- 关系类型的名称
- 如果角色可读,则用 0 表示
- 对应于 RoleStatus.NO_ROLE_WITH_NAME 的整数
- 对应于 RoleStatus.ROLE_NOT_READABLE 的整数
IllegalArgumentException
- 如果参数为 null
RelationTypeNotFoundException
- 如果 Relation Service 中的关系类型是未知的
Integer checkRoleWriting(Role role, String relationTypeName, Boolean initFlag) throws IllegalArgumentException, RelationTypeNotFoundException
role
- 要检查的角色
relationTypeName
- 关系类型的名称
initFlg
- 指定已完成角色的初始化检查,并且不验证写入访问的标志。
- 如果角色可以设置,则用 0 表示
- 对应于 RoleStatus.NO_ROLE_WITH_NAME 的整数
- 对应于 RoleStatus.ROLE_NOT_WRITABLE 的整数
- 对应于 RoleStatus.LESS_THAN_MIN_ROLE_DEGREE 的整数
- 对应于 RoleStatus.MORE_THAN_MAX_ROLE_DEGREE 的整数
- 对应于 RoleStatus.REF_MBEAN_OF_INCORRECT_CLASS 的整数
- 对应于 RoleStatus.REF_MBEAN_NOT_REGISTERED 的整数
IllegalArgumentException
- 如果参数为 null
RelationTypeNotFoundException
- 如果是未知关系类型
void sendRelationCreationNotification(String relationId) throws IllegalArgumentException, RelationNotFoundException
- RelationNotification.RELATION_BASIC_CREATION,如果该关系是 Relation Service 内部的一个对象
- RelationNotification.RELATION_MBEAN_CREATION,如果该关系是作为关系添加的 MBean。
源对象是 Relation Service 本身。
它在 Relation Service createRelation() 和 addRelation() 方法中调用。
relationId
- 更新的关系的关系标识符
IllegalArgumentException
- 如果参数为 null
RelationNotFoundException
- 如果不存在给定关系 id 的关系
void sendRoleUpdateNotification(String relationId, Role newRole, List<ObjectName> oldRoleValue) throws IllegalArgumentException, RelationNotFoundException
- RelationNotification.RELATION_BASIC_UPDATE,如果该关系是 Relation Service 内部的一个对象
- RelationNotification.RELATION_MBEAN_UPDATE,如果该关系是作为关系添加的 MBean。
源对象是 Relation Service 本身。
它在关系 MBean setRole()(针对给定角色)和 setRoles()(针对每个角色)方法(RelationSupport 类中提供的实现)中调用。
它还在 Relation Service setRole()(针对给定角色)和 setRoles()(针对每个角色)方法中调用。
relationId
- 更新的关系的关系标识符
newRole
- 新的角色(名称和新的值)
oldRoleValue
- 旧角色值(ObjectName 对象的列表)
IllegalArgumentException
- 如果参数为 null
RelationNotFoundException
- 如果不存在给定关系 id 的关系
void sendRelationRemovalNotification(String relationId, List<ObjectName> unregMBeanList) throws IllegalArgumentException, RelationNotFoundException
- RelationNotification.RELATION_BASIC_REMOVAL,如果该关系是 Relation Service 内部的一个对象
- RelationNotification.RELATION_MBEAN_REMOVAL,如果该关系是作为关系添加的 MBean。
源对象是 Relation Service 本身。
它在 Relation Service removeRelation() 方法中调用。
relationId
- 更新的关系的关系标识符
unregMBeanList
- 期望因为关系移除而注销的 MBean 的 ObjectName 列表(可以为 null)
IllegalArgumentException
- 如果参数为 null
RelationNotFoundException
- 如果不存在给定关系 id 的关系
void updateRoleMap(String relationId, Role newRole, List<ObjectName> oldRoleValue) throws IllegalArgumentException, RelationServiceNotRegisteredException, RelationNotFoundException
它在关系 MBean setRole()(针对给定角色)和 setRoles()(针对每个角色)方法(RelationSupport 类中提供的实现)中调用。
它还在 Relation Service setRole()(针对给定角色)和 setRoles()(针对每个角色)方法中调用。
为了允许 Relation Service 维护一致性(MBean 注销时)以及能够执行查询,更新角色时必须调用此方法。
relationId
- 已更新关系的关系标识符
newRole
- 新的角色(名称和新值)
oldRoleValue
- 旧角色值(ObjectName 对象的列表)