- java.lang.Object
-
- javax.management.NotificationBroadcasterSupport
-
- javax.management.relation.RelationService
-
- All Implemented Interfaces:
-
EventListener
,MBeanRegistration
,NotificationBroadcaster
,NotificationEmitter
,NotificationListener
,RelationServiceMBean
public class RelationService extends NotificationBroadcasterSupport implements RelationServiceMBean, MBeanRegistration, NotificationListener
关系服务负责创建和删除关系类型和关系,处理一致性和提供查询机制。它通过扩展NotificationBroadcasterSupport来实现NotificationBroadcaster,以便在从中删除关系时发送通知。
它实现NotificationListener接口以能够接收关于在关系角色和关系MBeans中引用的MBean的注销的通知。
它实现MBeanRegistration界面,以便能够检索其ObjectName和MBean Server。
- 从以下版本开始:
- 1.5
-
-
构造方法摘要
构造方法 Constructor 描述 RelationService(boolean immediatePurgeFlag)
构造函数。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
addRelation(ObjectName relationObjectName)
将由用户创建的一个MBean(并由他注册在MBean服务器中)添加为关系服务中的关系。void
addRelationType(RelationType relationTypeObj)
将给定对象添加为关系类型。Integer
checkRoleReading(String roleName, String relationTypeName)
检查给定角色是否可以以给定类型的关系读取。Integer
checkRoleWriting(Role role, String relationTypeName, Boolean initFlag)
检查给定的角色是否可以按给定类型的关系进行设置。void
createRelation(String relationId, String relationTypeName, RoleList roleList)
创建给定关系类型的简单关系(由RelationSupport对象表示),并将其添加到关系服务中。void
createRelationType(String relationTypeName, RoleInfo[] roleInfoArray)
使用给定的角色信息(由RoleInfo对象提供)创建关系类型(RelationTypeSupport对象),并将其添加到关系服务中。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()
返回由关系服务处理的所有关系的所有关系ID。List<String>
getAllRelationTypeNames()
检索所有已知关系类型的名称。RoleResult
getAllRoles(String relationId)
返回关系中存在的所有角色。MBeanNotificationInfo[]
getNotificationInfo()
返回一个NotificationInfo对象,该对象包含通知的Java类的名称以及发送的通知类型。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)
检索当前在给定角色中引用的MBeans数。RoleInfo
getRoleInfo(String relationTypeName, String roleInfoName)
检索给定关系类型的给定角色名称的角色信息。List<RoleInfo>
getRoleInfos(String relationTypeName)
检索给定关系类型的角色信息(RoleInfo对象)的列表。RoleResult
getRoles(String relationId, String[] roleNameArray)
以给定的关系取得给定名称的角色值。void
handleNotification(Notification notif, Object handback)
JMX通知发生时调用。Boolean
hasRelation(String relationId)
检查在关系服务中是否存在与给定关系ID相关联的关系。void
isActive()
检查关系服务是否处于活动状态。String
isRelation(ObjectName objectName)
如果MBean作为关系服务中的关系添加,则返回与给定ObjectName关联的关系id。ObjectName
isRelationMBean(String relationId)
如果关系由MBean(由用户创建并在关系服务中添加为关系)表示,则返回MBean的ObjectName。void
postDeregister()
允许MBean在MBean服务器中取消注册后执行所需的任何操作。void
postRegister(Boolean registrationDone)
允许MBean在MBean服务器中注册或注册失败后执行所需的操作。void
preDeregister()
允许MBean在MBean服务器取消注册之前执行所需的任何操作。ObjectName
preRegister(MBeanServer server, ObjectName name)
允许MBean在MBean服务器注册之前执行所需的任何操作。void
purgeRelations()
清除关系。void
removeRelation(String relationId)
从关系服务中删除给定的关系。void
removeRelationType(String relationTypeName)
从关系服务中删除给定的关系类型。void
sendRelationCreationNotification(String relationId)
发送关系创建的通知(RelationNotification)。void
sendRelationRemovalNotification(String relationId, List<ObjectName> unregMBeanList)
发送通知(RelationNotification)用于删除关系。void
sendRoleUpdateNotification(String relationId, Role newRole, List<ObjectName> oldValue)
发送给定关系中角色更新的通知(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> oldValue)
处理关系服务角色图更新给定关系中给定角色的更新。-
Methods inherited from class javax.management.NotificationBroadcasterSupport
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
-
-
-
-
方法详细信息
-
isActive
public void isActive() throws RelationServiceNotRegisteredException
检查关系服务是否处于活动状态。 当前情况是必须在MBean服务器中注册关系服务- Specified by:
-
isActive
在接口RelationServiceMBean
- 异常
-
RelationServiceNotRegisteredException
- 如果没有注册
-
preRegister
public ObjectName preRegister(MBeanServer server, ObjectName name) throws 异常
描述从接口MBeanRegistration
复制允许MBean在MBean服务器注册之前执行所需的任何操作。 如果未指定MBean的名称,则MBean可以为其注册提供一个名称。 如果引发任何异常,MBean将不会在MBean服务器中注册。- Specified by:
-
preRegister
在接口MBeanRegistration
- 参数
-
server
- MBean将在其中注册的MBean服务器。 -
name
- MBean的对象名称。 如果对MBeanServer
接口中的一个createMBean
或registerMBean
方法的name参数为null,则此名称为null。 在这种情况下,此方法必须为新的MBean返回非空的ObjectName。 - 结果
-
要注册MBean的名称。
此值不能为空。
如果
name
参数不为空,则通常不一定是返回值。 - 异常
-
异常
- 这个异常将被MBean服务器捕获,并重新抛出为MBeanRegistrationException
。
-
postRegister
public void postRegister(Boolean registrationDone)
描述从接口MBeanRegistration
复制允许MBean在MBean服务器中注册或注册失败后执行所需的操作。如果该方法的实现会引发
RuntimeException
或Error
,则MBean服务器将分别重新启动RuntimeMBeanException
或RuntimeErrorException
。 但是,在postRegister
抛出异常将不会更改MBean的状态:如果MBean已经注册(registrationDone
为true
),则MBean将保持注册。这可能会使代码调用
createMBean()
或registerMBean()
,因为这样的代码可能会假设在引发异常时MBean注册失败。 因此,如果可以避免,推荐postRegister
实现不会抛出运行时异常或错误。- Specified by:
-
postRegister
在接口MBeanRegistration
- 参数
-
registrationDone
- 指示MBean是否已成功注册到MBean服务器中。 值false表示注册阶段失败。
-
preDeregister
public void preDeregister() throws 异常
说明从界面复制:MBeanRegistration
允许MBean在MBean服务器取消注册之前执行所需的任何操作。- Specified by:
-
preDeregister
在接口MBeanRegistration
- 异常
-
异常
- 此异常将被MBean服务器捕获,并重新抛出为MBeanRegistrationException
。
-
postDeregister
public void postDeregister()
说明从接口MBeanRegistration
复制允许MBean在MBean服务器中取消注册后执行所需的任何操作。如果这个方法的实现会引发一个
RuntimeException
或一个Error
,那么MBean服务器会分别推翻RuntimeMBeanException
或RuntimeErrorException
。 但是,在postDeregister
抛出异常将不会更改MBean的状态:MBean已经成功注销,并将保持不变。这可能会导致代码调用
unregisterMBean()
令人困惑,因为它可能会假设MBean注销失败。 因此,如果可以避免,推荐postDeregister
实现不会抛出运行时异常或错误。- Specified by:
-
postDeregister
在接口MBeanRegistration
-
getPurgeFlag
public boolean getPurgeFlag()
返回标志,以指示是否在关系中引用的MBean的注销收到通知,如果必须立即执行关系的“清除”(寻找关系不再有效),或者是否将执行只有当purgeRelations方法被显式调用时才执行。真的是立即清除。
- Specified by:
-
getPurgeFlag
在接口RelationServiceMBean
- 结果
- 如果清洗是自动的,则为真。
- 另请参见:
-
setPurgeFlag(boolean)
-
setPurgeFlag
public void setPurgeFlag(boolean purgeFlag)
设置标志以指示是否在关系中引用的MBean注销的通知被接收,如果必须立即执行关系的“清除”(寻找关系不再有效),或者如果将只有当purgeRelations方法被显式调用时才执行。真的是立即清除。
- Specified by:
-
setPurgeFlag
在接口RelationServiceMBean
- 参数
-
purgeFlag
- 国旗 - 另请参见:
-
getPurgeFlag()
-
createRelationType
public void createRelationType(String relationTypeName, RoleInfo[] roleInfoArray) throws IllegalArgumentException, InvalidRelationTypeException
使用给定的角色信息(由RoleInfo对象提供)创建关系类型(RelationTypeSupport对象),并将其添加到关系服务中。- Specified by:
-
createRelationType
在接口RelationServiceMBean
- 参数
-
relationTypeName
- 关系类型的名称 -
roleInfoArray
- 角色信息数组 - 异常
-
IllegalArgumentException
- 如果为空参数 -
InvalidRelationTypeException
- 如果:- 已经有一个关系类型与该名称
- 相同的名称已被用于两个不同的角色信息
- 没有提供角色信息
- 提供一个空的角色信息
-
addRelationType
public void addRelationType(RelationType relationTypeObj) throws IllegalArgumentException, InvalidRelationTypeException
将给定对象添加为关系类型。 该对象预计将实现RelationType接口。- Specified by:
-
addRelationType
在接口RelationServiceMBean
- 参数
-
relationTypeObj
- 关系类型对象(实现RelationType接口) - 异常
-
IllegalArgumentException
- 如果null参数或者如果relationTypeObj.getRelationTypeName()
返回null。 -
InvalidRelationTypeException
- if:- 相同的名称已被用于两个不同的角色
- 没有提供角色信息
- 提供一个空的角色信息
- 已经有一个关系类型与该名称
-
getAllRelationTypeNames
public List<String> getAllRelationTypeNames()
检索所有已知关系类型的名称。- Specified by:
-
getAllRelationTypeNames
在接口RelationServiceMBean
- 结果
- 关系类型名称(Strings)的ArrayList
-
getRoleInfos
public List<RoleInfo> getRoleInfos(String relationTypeName) throws IllegalArgumentException, RelationTypeNotFoundException
检索给定关系类型的角色信息(RoleInfo对象)的列表。- Specified by:
-
getRoleInfos
在接口RelationServiceMBean
- 参数
-
relationTypeName
- 关系类型的名称 - 结果
- RoleInfo的ArrayList。
- 异常
-
IllegalArgumentException
- 如果为空参数 -
RelationTypeNotFoundException
- 如果该名称没有关系类型。
-
getRoleInfo
public RoleInfo getRoleInfo(String relationTypeName, String roleInfoName) throws IllegalArgumentException, RelationTypeNotFoundException, RoleInfoNotFoundException
检索给定关系类型的给定角色名称的角色信息。- Specified by:
-
getRoleInfo
在接口RelationServiceMBean
- 参数
-
relationTypeName
- 关系类型的名称 -
roleInfoName
- 角色名称 - 结果
- RoleInfo对象。
- 异常
-
IllegalArgumentException
- 如果为空参数 -
RelationTypeNotFoundException
- 如果关系类型在关系服务中未知 -
RoleInfoNotFoundException
- 如果角色不是关系类型的一部分。
-
removeRelationType
public void removeRelationType(String relationTypeName) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationTypeNotFoundException
从关系服务中删除给定的关系类型。该类型的关系对象将从关系服务中删除。
- Specified by:
-
removeRelationType
在接口RelationServiceMBean
- 参数
-
relationTypeName
- 要删除的关系类型的名称 - 异常
-
RelationServiceNotRegisteredException
- 如果关系服务未在MBean服务器中注册 -
IllegalArgumentException
- 如果为空参数 -
RelationTypeNotFoundException
- 如果该名称没有关系类型
-
createRelation
public void createRelation(String relationId, String relationTypeName, RoleList roleList) throws RelationServiceNotRegisteredException, IllegalArgumentException, RoleNotFoundException, InvalidRelationIdException, RelationTypeNotFoundException, InvalidRoleValueException
创建给定关系类型的简单关系(由RelationSupport对象表示),并将其添加到关系服务中。角色根据参数中提供的角色列表进行初始化。 没有以这种方式初始化的那些设置为ObjectName的空ArrayList。
发送一个类型为RELATION_BASIC_CREATION的关系通知。
- Specified by:
-
createRelation
在接口RelationServiceMBean
- 参数
-
relationId
- 关系标识符,用于唯一标识关系服务内的关系 -
relationTypeName
- 关系类型的名称(必须在关系服务中创建) -
roleList
- 用于初始化关系角色的角色列表(可以为null)。 - 异常
-
RelationServiceNotRegisteredException
- 如果关系服务未在MBean服务器中注册 -
IllegalArgumentException
- 如果为空参数,除角色列表之外,如果没有角色初始化,则可以为null -
RoleNotFoundException
- 如果为关系类型中不存在的角色提供值 -
InvalidRelationIdException
- 如果关系id已被使用 -
RelationTypeNotFoundException
- 如果关系类型在关系服务中未知 -
InvalidRoleValueException
- 如果:- 相同的角色名称用于两个不同的角色
- 给定值中引用的MBean的数量小于预期的最小度
- 提供的值中引用的MBean的数量超过预期的最大度
- 值中的一个引用的MBean不是该角色的MBean类的对象
- 为该角色提供的MBean不存在
-
addRelation
public void addRelation(ObjectName relationObjectName) throws IllegalArgumentException, RelationServiceNotRegisteredException, NoSuchMethodException, InvalidRelationIdException, InstanceNotFoundException, InvalidRelationServiceException, RelationTypeNotFoundException, RoleNotFoundException, InvalidRoleValueException
将由用户创建的一个MBean(并由他注册在MBean服务器中)添加为关系服务中的关系。要作为关系添加,MBean必须符合以下条件:
- 实现Relation界面
- 为RelationService ObjectName提供当前关系服务的ObjectName
- 在当前的关系服务中具有唯一且不使用的关系ID
- 在关系服务中创建关系类型
- 具有符合关系类型中提供的角色信息的角色。
- Specified by:
-
addRelation
在接口RelationServiceMBean
- 参数
-
relationObjectName
- 要添加的关系MBean的ObjectName。 - 异常
-
IllegalArgumentException
- 如果为空参数 -
RelationServiceNotRegisteredException
- 如果关系服务未在MBean服务器中注册 -
NoSuchMethodException
- 如果MBean不实现Relation界面 -
InvalidRelationIdException
- 如果:- 在MBean中没有关系标识符
- 关系标识符已经在关系服务中使用
-
InstanceNotFoundException
- 如果给定的ObjectName的MBean尚未注册 -
InvalidRelationServiceException
- 如果:- 在MBean中没有关系服务名称
- MBean中的关系服务名称不是当前的关系服务
-
RelationTypeNotFoundException
- if:- 在MBean中没有关系类型名称
- MBean中的关系类型名称与关系服务中创建的关系类型不对应
-
InvalidRoleValueException
- if:- 一个角色中引用的MBean的数量小于预期的最小度
- 角色中引用的MBean的数量超过预期的最大度
- 值中的一个引用的MBean不是该角色的MBean类的对象
- 为一个角色提供的MBean不存在
-
RoleNotFoundException
- 如果为关系类型中不存在的角色提供值
-
isRelationMBean
public ObjectName isRelationMBean(String relationId) throws IllegalArgumentException, RelationNotFoundException
如果关系由MBean(由用户创建并在关系服务中添加为关系)表示,则返回MBean的ObjectName。- Specified by:
-
isRelationMBean
在接口RelationServiceMBean
- 参数
-
relationId
- 识别关系的关系id - 结果
- 对应关系MBean的ObjectName,如果关系不是MBean,则为null。
- 异常
-
IllegalArgumentException
- 如果为空参数 -
RelationNotFoundException
- 与该ID无关系
-
isRelation
public String isRelation(ObjectName objectName) throws IllegalArgumentException
如果MBean作为关系服务中的关系添加,则返回与给定ObjectName关联的关系id。- Specified by:
-
isRelation
在接口RelationServiceMBean
- 参数
-
objectName
- 假定关系的ObjectName - 结果
- 关系id(String)或null(如果ObjectName不是由关系服务处理的关系)
- 异常
-
IllegalArgumentException
- 如果为空参数
-
hasRelation
public Boolean hasRelation(String relationId) throws IllegalArgumentException
检查在关系服务中是否存在与给定关系ID相关联的关系。- Specified by:
-
hasRelation
在接口RelationServiceMBean
- 参数
-
relationId
- 识别关系的关系id - 结果
- boolean:如果有关系,则为true,否则为false
- 异常
-
IllegalArgumentException
- 如果为空参数
-
getAllRelationIds
public List<String> getAllRelationIds()
返回由关系服务处理的所有关系的所有关系ID。- Specified by:
-
getAllRelationIds
在接口RelationServiceMBean
- 结果
- String的ArrayList
-
checkRoleReading
public Integer checkRoleReading(String roleName, String relationTypeName) throws IllegalArgumentException, RelationTypeNotFoundException
检查给定角色是否可以以给定类型的关系读取。- Specified by:
-
checkRoleReading
在接口RelationServiceMBean
- 参数
-
roleName
- 要检查的角色的名称 -
relationTypeName
- 关系类型的名称 - 结果
-
一个整数对应于在RoleUnresolved中表示为常量的可能问题的整数:
- 如果角色可以读取,则为0
- 对应于RoleStatus.NO_ROLE_WITH_NAME的整数
- 对应于RoleStatus.ROLE_NOT_READABLE的整数
- 异常
-
IllegalArgumentException
- 如果为空参数 -
RelationTypeNotFoundException
- 关系类型在关系服务中未知
-
checkRoleWriting
public Integer checkRoleWriting(Role role, String relationTypeName, Boolean initFlag) throws IllegalArgumentException, RelationTypeNotFoundException
检查给定的角色是否可以按给定类型的关系进行设置。- Specified by:
-
checkRoleWriting
在接口RelationServiceMBean
- 参数
-
role
- 要检查的角色 -
relationTypeName
- 关系类型的名称 -
initFlag
- 用于指定对角色的初始化进行检查的标志,不得验证写访问。 - 结果
-
一个整数对应于在RoleUnresolved中表示为常量的可能问题的整数:
- 如果角色可以设置为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
- 如果为空参数 -
RelationTypeNotFoundException
- 如果未知关系类型
-
sendRelationCreationNotification
public void sendRelationCreationNotification(String relationId) throws IllegalArgumentException, RelationNotFoundException
发送关系创建的通知(RelationNotification)。 通知类型为:- RelationNotification.RELATION_BASIC_CREATION,如果关系是关系服务内部的一个对象
- RelationNotification.RELATION_MBEAN_CREATION如果关系是作为关系添加的MBean。
源对象是Relation Service本身。
它在Relation Service中创建createRelation()和addRelation()方法。
- Specified by:
-
sendRelationCreationNotification
在接口RelationServiceMBean
- 参数
-
relationId
- 更新关系的关系标识符 - 异常
-
IllegalArgumentException
- 如果为空参数 -
RelationNotFoundException
- 如果给定的关系id没有关系
-
sendRoleUpdateNotification
public void sendRoleUpdateNotification(String relationId, Role newRole, List<ObjectName> oldValue) throws IllegalArgumentException, RelationNotFoundException
发送给定关系中角色更新的通知(RelationNotification)。 通知类型为:- RelationNotification.RELATION_BASIC_UPDATE如果关系是关系服务内部的一个对象
- RelationNotification.RELATION_MBEAN_UPDATE如果关系是作为关系添加的MBean。
源对象是Relation Service本身。
它被称为关于MBean setRole()(用于给定角色)和setRoles()(对于每个角色)方法(RelationSupport类中提供的实现)。
它也在Relation Service中调用setRole()(用于给定的角色)和setRoles()(对于每个角色)的方法。
- Specified by:
-
sendRoleUpdateNotification
在接口RelationServiceMBean
- 参数
-
relationId
- 更新关系的关系标识符 -
newRole
- 新角色(名称和新值) -
oldValue
- 旧角色值(ObjectName对象列表) - 异常
-
IllegalArgumentException
- 如果为空参数 -
RelationNotFoundException
- 如果给定的关系id没有关系
-
sendRelationRemovalNotification
public void sendRelationRemovalNotification(String relationId, List<ObjectName> unregMBeanList) throws IllegalArgumentException, RelationNotFoundException
发送通知(RelationNotification)用于删除关系。 通知类型为:- RelationNotification.RELATION_BASIC_REMOVAL,如果关系是关系服务内部的一个对象
- RelationNotification.RELATION_MBEAN_REMOVAL,如果关系是作为关系添加的MBean。
源对象是Relation Service本身。
它在Relation Service中调用removeRelation()方法。
- Specified by:
-
sendRelationRemovalNotification
在接口RelationServiceMBean
- 参数
-
relationId
- 更新关系的关系标识符 -
unregMBeanList
- 由于关系删除而预期未注册的MBean的unregMBeanList
列表(可以为null) - 异常
-
IllegalArgumentException
- 如果为空参数 -
RelationNotFoundException
- 如果给定的关系id没有关系
-
updateRoleMap
public void updateRoleMap(String relationId, Role newRole, List<ObjectName> oldValue) throws IllegalArgumentException, RelationServiceNotRegisteredException, RelationNotFoundException
处理关系服务角色图更新给定关系中给定角色的更新。它被称为关于MBean setRole()(用于给定角色)和setRoles()(对于每个角色)方法(RelationSupport类中提供的实现)。
它也在Relation Service中调用setRole()(用于给定的角色)和setRoles()(对于每个角色)的方法。
为了使关系服务保持一致性(在MBean注销的情况下)并且能够执行查询,当更新角色时,必须调用此方法。
- Specified by:
-
updateRoleMap
在接口RelationServiceMBean
- 参数
-
relationId
- 更新关系的关系标识符 -
newRole
- 新角色(名称和新值) -
oldValue
- 旧角色值(ObjectName对象列表) - 异常
-
IllegalArgumentException
- 如果为空参数 -
RelationServiceNotRegisteredException
- 如果关系服务未在MBean服务器中注册 -
RelationNotFoundException
- 如果没有给定的id的关系。
-
removeRelation
public void removeRelation(String relationId) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationNotFoundException
从关系服务中删除给定的关系。发送关系通知通知,其类型为:
- RelationNotification.RELATION_BASIC_REMOVAL,如果关系仅在关系服务内部
- RelationNotification.RELATION_MBEAN_REMOVAL,如果关系被注册为MBean。
对于在这种关系中引用的MBean,将不会做任何事情,
- Specified by:
-
removeRelation
在接口RelationServiceMBean
- 参数
-
relationId
- 要删除的关系的关系id - 异常
-
RelationServiceNotRegisteredException
- 如果关系服务未在MBean服务器中注册 -
IllegalArgumentException
- 如果为空参数 -
RelationNotFoundException
- 如果没有对应给定关系id的关系
-
purgeRelations
public void purgeRelations() throws RelationServiceNotRegisteredException
清除关系。根据purgeFlag值,当接收到关联中引用的MBean的注销的通知(如果该标志设置为true),或者(如果该标志设置为false),则该方法被自动调用。
在这种情况下,用户可以调用它来保持关系的一致性。 要记住,如果MBean未注册,并且清除不立即完成,则如果ObjectName被重用并分配给关系中引用的另一个MBean,则手动调用此purgeRelations()方法将导致麻烦,因为将ObjectName作为对应于未注册的MBean,没有看到新的MBean。
行为取决于引用未注册的MBean的角色的基数:
- 如果删除角色中的一个MBean引用使其引用次数小于最小度,则必须删除该关系。
- 如果删除MBean引用后剩余的引用数仍然在基数范围内,请保持关系并更新它调用其handleMBeanUnregistration()回调。
- Specified by:
-
purgeRelations
在接口RelationServiceMBean
- 异常
-
RelationServiceNotRegisteredException
- 如果关系服务未在MBean服务器中注册。
-
findReferencingRelations
public Map<String,List<String>> findReferencingRelations(ObjectName mbeanName, String relationTypeName, String roleName) throws IllegalArgumentException
检索给定MBean引用的关系。这对应于CIM“引用”和“引用名称”操作。
- Specified by:
-
findReferencingRelations
在接口RelationServiceMBean
- 参数
-
mbeanName
- MBean的ObjectName -
relationTypeName
- 可以为null; 如果指定的话,只有这种类型的关系才会在搜索中被考虑。 否则会考虑所有关系类型。 -
roleName
- 可以为null; 如果指定,则只返回该角色中引用MBean的关系。 否则所有角色都被考虑。 - 结果
- 一个HashMap,其中的关键字是引用MBean的关系的关系ids,每个关键字的值都是一个角色名称的ArrayList(可以在同一关系中的几个角色中引用MBean)。
- 异常
-
IllegalArgumentException
- 如果为空参数
-
findAssociatedMBeans
public Map<ObjectName,List<String>> findAssociatedMBeans(ObjectName mbeanName, String relationTypeName, String roleName) throws IllegalArgumentException
检索与某个关系中的给定关联的MBean。这对应于CIM Associator和AssociatorNames操作。
- Specified by:
-
findAssociatedMBeans
在接口RelationServiceMBean
- 参数
-
mbeanName
- MBean的ObjectName -
relationTypeName
- 可以为null; 如果指定的话,只有这种类型的关系才会在搜索中被考虑。 否则会考虑所有关系类型。 -
roleName
- 可以为null; 如果指定,则仅考虑在该角色中引用MBean的关系。 否则所有角色都被考虑。 - 结果
- 一个HashMap,其中的关键字是与给定MBean相关联的MBean的ObjectNames,并且每个关键字的值是关键字MBean与给定关系的关系的关系id的ArrayList(可以相关联的值)在几个不同的关系)。
- 异常
-
IllegalArgumentException
- 如果为空参数
-
findRelationsOfType
public List<String> findRelationsOfType(String relationTypeName) throws IllegalArgumentException, RelationTypeNotFoundException
返回给定类型的关系的关系id。- Specified by:
-
findRelationsOfType
在接口RelationServiceMBean
- 参数
-
relationTypeName
- 关系类型名称 - 结果
- 一个关系ids的ArrayList。
- 异常
-
IllegalArgumentException
- 如果为空参数 -
RelationTypeNotFoundException
- 如果与该名称没有关系类型。
-
getRole
public List<ObjectName> getRole(String relationId, String roleName) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationNotFoundException, RoleNotFoundException
在给定关系中为给定的角色名称检索角色值。- Specified by:
-
getRole
在接口RelationServiceMBean
- 参数
-
relationId
- 关系id -
roleName
- 角色名称 - 结果
- ObjectName对象的ArrayList是角色值
- 异常
-
RelationServiceNotRegisteredException
- 如果关系服务未注册 -
IllegalArgumentException
- 如果为空参数 -
RelationNotFoundException
- 如果与给定的id没有关系 -
RoleNotFoundException
- if:- 给定名字没有任何作用
要么
- 角色不可读。
- 另请参见:
-
setRole(java.lang.String, javax.management.relation.Role)
-
getRoles
public RoleResult getRoles(String relationId, String[] roleNameArray) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationNotFoundException
以给定的关系取得给定名称的角色值。- Specified by:
-
getRoles
在接口RelationServiceMBean
- 参数
-
relationId
- 关系id -
roleNameArray
- 要检索的角色的名称数组 - 结果
- 一个RoleResult对象,包括一个RoleList(用于成功检索的角色)和一个RoleUnresolvedList(对于未检索的角色)。
- 异常
-
RelationServiceNotRegisteredException
- 如果关系服务未在MBean服务器中注册 -
IllegalArgumentException
- 如果为空参数 -
RelationNotFoundException
- 如果与给定的id没有关系 - 另请参见:
-
setRoles(java.lang.String, javax.management.relation.RoleList)
-
getAllRoles
public RoleResult getAllRoles(String relationId) throws IllegalArgumentException, RelationNotFoundException, RelationServiceNotRegisteredException
返回关系中存在的所有角色。- Specified by:
-
getAllRoles
在接口RelationServiceMBean
- 参数
-
relationId
- 关系id - 结果
- 一个RoleResult对象,包括一个RoleList(用于成功检索的角色)和一个RoleUnresolvedList(对于角色不可读)。
- 异常
-
IllegalArgumentException
- 如果为空参数 -
RelationNotFoundException
- 如果没有给定id的关系 -
RelationServiceNotRegisteredException
- 如果关系服务未在MBean服务器中注册
-
getRoleCardinality
public Integer getRoleCardinality(String relationId, String roleName) throws IllegalArgumentException, RelationNotFoundException, RoleNotFoundException
检索当前在给定角色中引用的MBeans数。- Specified by:
-
getRoleCardinality
在接口RelationServiceMBean
- 参数
-
relationId
- 关系id -
roleName
- 角色名称 - 结果
- 该角色中当前引用的MBean的数量
- 异常
-
IllegalArgumentException
- 如果为空参数 -
RelationNotFoundException
- 如果与给定的id没有关系 -
RoleNotFoundException
- 如果没有给定名称的角色
-
setRole
public void setRole(String relationId, Role role) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationNotFoundException, RoleNotFoundException, InvalidRoleValueException
在给定的关系中设定给定的角色。将根据其在关系类型中提供的相应角色定义来检查角色
关系服务将跟踪变更,以通过处理引用的MBean注销来保持关系的一致性。
- Specified by:
-
setRole
在接口RelationServiceMBean
- 参数
-
relationId
- 关系id -
role
- 要设置的角色(名称和新值) - 异常
-
RelationServiceNotRegisteredException
- 如果关联服务未在MBean服务器中注册 -
IllegalArgumentException
- 如果为空参数 -
RelationNotFoundException
- 如果没有与给定的id的关系 -
RoleNotFoundException
- 如果角色不存在或不可写 -
InvalidRoleValueException
- 如果为角色提供的值无效:- 给定值中引用的MBean的数量小于预期的最小度
要么
- 提供的值中引用的MBean的数量超过预期的最大度
要么
- 值中的一个引用的MBean不是该角色的MBean类的对象
要么
- 为该角色提供的MBean不存在
- 另请参见:
-
getRole(java.lang.String, java.lang.String)
-
setRoles
public RoleResult setRoles(String relationId, RoleList roleList) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationNotFoundException
在给定的关系中设定给定的角色。将根据其在关系类型中提供的相应角色定义来检查角色
关系服务通过处理引用的MBean注销来跟踪更改以保持关系的一致性。
- Specified by:
-
setRoles
在接口RelationServiceMBean
- 参数
-
relationId
- 关系id -
roleList
- 要设置的角色列表 - 结果
- 一个RoleResult对象,包括一个RoleList(用于角色成功设置)和一个RoleUnresolvedList(对于未设置的角色)。
- 异常
-
RelationServiceNotRegisteredException
- 如果关系服务未在MBean服务器中注册 -
IllegalArgumentException
- 如果为空参数 -
RelationNotFoundException
- 如果与给定的id没有关系 - 另请参见:
-
getRoles(java.lang.String, java.lang.String[])
-
getReferencedMBeans
public Map<ObjectName,List<String>> getReferencedMBeans(String relationId) throws IllegalArgumentException, RelationNotFoundException
检索在关系的各种角色中引用的MBean。- Specified by:
-
getReferencedMBeans
在接口RelationServiceMBean
- 参数
-
relationId
- 关系id - 结果
-
一个HashMap映射:
ObjectName - > ArrayList的String(角色名称)
- 异常
-
IllegalArgumentException
- 如果为空参数 -
RelationNotFoundException
- 如果给定的关系id没有关系
-
getRelationTypeName
public String getRelationTypeName(String relationId) throws IllegalArgumentException, RelationNotFoundException
返回给定关系的关联关系类型的名称。- Specified by:
-
getRelationTypeName
在接口RelationServiceMBean
- 参数
-
relationId
- 关系id - 结果
- 关联关系类型的名称。
- 异常
-
IllegalArgumentException
- 如果为空参数 -
RelationNotFoundException
- 如果给定的关系id没有关系
-
handleNotification
public void handleNotification(Notification notif, Object handback)
JMX通知发生时调用。 目前处理关于MBean取消注册的通知,无论是在关系角色中引用还是作为关系本身。- Specified by:
-
handleNotification
在接口NotificationListener
- 参数
-
notif
- 通知。 -
handback
- 一个不透明的对象,帮助侦听器关联MBean发射器的信息(可以为null)。
-
getNotificationInfo
public MBeanNotificationInfo[] getNotificationInfo()
返回一个NotificationInfo对象,该对象包含通知的Java类的名称以及发送的通知类型。- Specified by:
-
getNotificationInfo
在接口NotificationBroadcaster
- 重写:
-
getNotificationInfo
在NotificationBroadcasterSupport
- 结果
- 可能通知的数组。
-
-