JavaTM 2 Platform
Standard Ed. 6

javax.management.relation
類別 RelationService

java.lang.Object
  繼承者 javax.management.NotificationBroadcasterSupport
      繼承者 javax.management.relation.RelationService
所有已實作的介面:
EventListener, MBeanRegistration, NotificationBroadcaster, NotificationEmitter, NotificationListener, RelationServiceMBean

public class RelationService
extends NotificationBroadcasterSupport
implements RelationServiceMBean, MBeanRegistration, NotificationListener

Relation Service 負責創建和刪除關係型別和關係,負責處理一致性並負責提供查詢機制。

它通過擴展 NotificationBroadcasterSupport 實作 NotificationBroadcaster,以便在從中移除關係時發送通知。

它實作 NotificationListener 介面,以便能夠接收有關註銷關係角色中參考的 MBean 的通知以及註銷關係 MBean 的通知。

它實作 MBeanRegistration 介面,以便能夠檢索其 ObjectName 和 MBean Server。

從以下版本開始:
1.5

建構子摘要
RelationService(boolean immediatePurgeFlag)
          建構子。
 
方法摘要
 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)
          返回關係中存在的所有角色。
 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)
          檢索給定角色中當前參考的 MBean 數。
 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 檢查是否存在 Relation Service 中標識的關係。
 void isActive()
          檢查該 Relation Service 是否處於活動狀態。
 String isRelation(ObjectName objectName)
          如果已經將 MBean 作為關係添加在 Relation Service 中,則返回與給定 ObjectName 相關的關係 id。
 ObjectName isRelationMBean(String relationId)
          如果用 MBean 表示關係(由使用者創建且作為 Relation Service 中的關係添加),則返回該 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)
          從 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> 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)
          針對給定關係中給定角色的更新來處理 Relation Service 角色映射的更新。
 
從類別 javax.management.NotificationBroadcasterSupport 繼承的方法
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

RelationService

public RelationService(boolean immediatePurgeFlag)
建構子。

參數:
immediatePurgeFlag - 指示何時接收註銷關係中參考的 MBean 的通知,指示是否必須執行關係的直接“肅清”(尋找不再有效的關係),或者是否只在顯式調用 purgeRelations 方法時執行該操作。

true 表示立即肅清。

方法詳細資訊

isActive

public void isActive()
              throws RelationServiceNotRegisteredException
檢查該 Relation Service 是否處於活動狀態。當前的條件是,Relation Service 必須在 MBean Server 中註冊。

指定者:
介面 RelationServiceMBean 中的 isActive
拋出:
RelationServiceNotRegisteredException - 如果未註冊 Relation Service

preRegister

public ObjectName preRegister(MBeanServer server,
                              ObjectName name)
                       throws Exception
從介面 MBeanRegistration 複製的描述
允許 MBean 在被註冊到 MBean 伺服器之前執行它所需要的任何操作。如果未指定 MBean 的名稱,則該 MBean 可以提供一個註冊名稱。如果引發任何異常,則該 MBean 不會被註冊到 MBean 伺服器中。

指定者:
介面 MBeanRegistration 中的 preRegister
參數:
server - 將要在其中註冊該 MBean 的 MBean 伺服器。
name - 該 MBean 的物件名。如果 MBeanServer 介面中的某個 createMBean 方法或 registerMBean 方法的 name 參數為 null,則此 name 也為 null。在這種情況下,此方法必須為新 MBean 返回非 null 的 ObjectName。
返回:
MBean 要被註冊的名稱。此值必須不為 null。如果 name 參數不為 null,則它通常但並非一定為返回值。
拋出:
Exception - MBean 伺服器會捕捉此異常並以 MBeanRegistrationException 的形式重新拋出。

postRegister

public void postRegister(Boolean registrationDone)
從介面 MBeanRegistration 複製的描述
允許 MBean 在被註冊到 MBean 伺服器或註銷失敗後執行任何所需要的操作。

指定者:
介面 MBeanRegistration 中的 postRegister
參數:
registrationDone - 指示該 MBean 是否已在 MBean 伺服器中成功註冊。false 值意味著註冊階段已失敗。

preDeregister

public void preDeregister()
                   throws Exception
從介面 MBeanRegistration 複製的描述
允許該 MBean 在從 MBean 伺服器註銷之前執行它所需要的任何操作。

指定者:
介面 MBeanRegistration 中的 preDeregister
拋出:
Exception - MBean 伺服器會捕捉此異常並以 MBeanRegistrationException 的形式重新拋出。

postDeregister

public void postDeregister()
從介面 MBeanRegistration 複製的描述
允許 MBean 在已從 MBean 伺服器註銷之後執行所需要的任何操作。

指定者:
介面 MBeanRegistration 中的 postDeregister

getPurgeFlag

public boolean getPurgeFlag()
返回一個標誌,以指示何時接收註銷關係中參考的 MBean 的通知,指示是否必須執行關係的直接“肅清”(尋找不再有效的關係),或者是否只在將顯式調用 purgeRelations 方法時執行該操作。

true 表示立即肅清。

指定者:
介面 RelationServiceMBean 中的 getPurgeFlag
返回:
如果肅清是自動進行的,則返回 true。
另請參見:
setPurgeFlag(boolean)

setPurgeFlag

public void setPurgeFlag(boolean purgeFlag)
設置一個標誌,以指示註銷關係中參考的 MBean 時是否接收通知,是否必須執行關係的直接“肅清”(尋找不再有效的關係),或者是否只在顯式調用 purgeRelations 方法時執行該操作。

true 表示立即肅清。

指定者:
介面 RelationServiceMBean 中的 setPurgeFlag
參數:
purgeFlag - 標誌
另請參見:
getPurgeFlag()

createRelationType

public void createRelationType(String relationTypeName,
                               RoleInfo[] roleInfoArray)
                        throws IllegalArgumentException,
                               InvalidRelationTypeException
用給定的角色資訊(由 RoleInfo 物件提供)創建一個關係型別(RelationTypeSupport 物件),並將其添加到 Relation Service 中。

指定者:
介面 RelationServiceMBean 中的 createRelationType
參數:
relationTypeName - 關係型別的名稱
roleInfoArray - 角色資訊的陣列
拋出:
IllegalArgumentException - 如果參數為 null
InvalidRelationTypeException - 如果:

- 具有該名稱的關係型別已經存在

- 兩個不同的角色資訊使用了同一個名稱

- 未提供角色資訊

- 提供了一個 null 角色資訊


addRelationType

public void addRelationType(RelationType relationTypeObj)
                     throws IllegalArgumentException,
                            InvalidRelationTypeException
作為關係型別添加給定的物件。該物件期望實作 RelationType 介面。

指定者:
介面 RelationServiceMBean 中的 addRelationType
參數:
relationTypeObj - 關係型別物件(實作該 RelationType 介面)
拋出:
IllegalArgumentException - 如果參數為 null或者 relationTypeObj.getRelationTypeName() 返回 null。
InvalidRelationTypeException - 如果:

- 兩個不同的角色用了同一個名稱

- 未提供角色資訊

- 提供了一個 null 角色資訊

- 具有該名稱的關係型別已經存在


getAllRelationTypeNames

public List<String> getAllRelationTypeNames()
檢索所有已知關係型別的名稱。

指定者:
介面 RelationServiceMBean 中的 getAllRelationTypeNames
返回:
關係型別名稱的 ArrayList(字元串)

getRoleInfos

public List<RoleInfo> getRoleInfos(String relationTypeName)
                            throws IllegalArgumentException,
                                   RelationTypeNotFoundException
檢索給定關係型別的角色資訊(RoleInfo 物件)的列表。

指定者:
介面 RelationServiceMBean 中的 getRoleInfos
參數:
relationTypeName - 關係型別的名稱
返回:
RoleInfo 的 ArrayList。
拋出:
IllegalArgumentException - 如果參數為 null
RelationTypeNotFoundException - 如果不存在具有該名稱的關係型別。

getRoleInfo

public RoleInfo getRoleInfo(String relationTypeName,
                            String roleInfoName)
                     throws IllegalArgumentException,
                            RelationTypeNotFoundException,
                            RoleInfoNotFoundException
檢索給定關係型別的給定角色名稱的角色資訊。

指定者:
介面 RelationServiceMBean 中的 getRoleInfo
參數:
relationTypeName - 關係型別的名稱
roleInfoName - 角色的名稱
返回:
RoleInfo 物件。
拋出:
IllegalArgumentException - 如果參數為 null
RelationTypeNotFoundException - 如果在 Relation Service 中的關係型別未知
RoleInfoNotFoundException - 如果該角色不是該關係型別的一部分。

removeRelationType

public void removeRelationType(String relationTypeName)
                        throws RelationServiceNotRegisteredException,
                               IllegalArgumentException,
                               RelationTypeNotFoundException
從 Relation Service 中移除給定的關係型別。

此型別的關係物件將要從 Relation Service 中移除。

指定者:
介面 RelationServiceMBean 中的 removeRelationType
參數:
relationTypeName - 要移除的關係型別名稱
拋出:
RelationServiceNotRegisteredException - 如果該 Relation Service 未在 MBean Server 中註冊
IllegalArgumentException - 如果參數為 null
RelationTypeNotFoundException - 如果不存在具有該名稱的關係型別

createRelation

public void createRelation(String relationId,
                           String relationTypeName,
                           RoleList roleList)
                    throws RelationServiceNotRegisteredException,
                           IllegalArgumentException,
                           RoleNotFoundException,
                           InvalidRelationIdException,
                           RelationTypeNotFoundException,
                           InvalidRoleValueException
創建給定關係型別的簡單關係(由 RelationSupport 物件表示),並將其添加到 Relation Service 中。

按照在參數中提供的角色列表初始化角色。將未按此方法初始化的角色設置為 ObjectName 的空 ArrayList。

發送型別為 RELATION_BASIC_CREATION 的 RelationNotification。

指定者:
介面 RelationServiceMBean 中的 createRelation
參數:
relationId - 關係標識符,用來唯一地標識 Relation Service 中的關係
relationTypeName - 關係型別的名稱(必須在 Relation Service 中創建)
roleList - 要初始化該關係的角色的角色列表(可以為 null)。
拋出:
RelationServiceNotRegisteredException - 如果 Relation Service 未在 MBean Server 中註冊
IllegalArgumentException - 如果參數為 null(角色列表除外,它在未進行角色初始化時可以為 null)
RoleNotFoundException - 如果為關係型別中不存在的角色提供值
InvalidRelationIdException - 如果關係 id 已經使用
RelationTypeNotFoundException - 如果在 Relation Service 中關係型別未知
InvalidRoleValueException - 如果:

- 兩個不同的角色使用了同一個角色名稱

- 給定值中參考的 MBean 數小於期望的最小程度

- 提供的值中參考的 MBean 數超過期望的最大程度

- 該值中參考的 MBean 的一個物件不是該角色期望的 MBean 類別的物件

- 如果不存在為該角色提供的 MBean


addRelation

public void addRelation(ObjectName relationObjectName)
                 throws IllegalArgumentException,
                        RelationServiceNotRegisteredException,
                        NoSuchMethodException,
                        InvalidRelationIdException,
                        InstanceNotFoundException,
                        InvalidRelationServiceException,
                        RelationTypeNotFoundException,
                        RoleNotFoundException,
                        InvalidRoleValueException
作為 Relation Service 中的關係添加由使用者創建(且由其在 MBean Server 中註冊)的 MBean。

將作為關係添加 MBean,它必須遵循以下做法:

- 實作該 Relation 介面

- 具有 RelationService ObjectName,即當前 Relation Service 的 ObjectName

- 具有在當前 Relation Service 中唯一且未使用的關係 id

- 具有關係型別,即在 Relation Service 中創建的關係型別

- 具有遵循在關係型別中提供的角色資訊的角色。

指定者:
介面 RelationServiceMBean 中的 addRelation
參數:
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 - 如果為關係型別中不存在的角色提供了值

isRelationMBean

public ObjectName isRelationMBean(String relationId)
                           throws IllegalArgumentException,
                                  RelationNotFoundException
如果用 MBean 表示關係(由使用者創建且作為 Relation Service 中的關係添加),則返回該 MBean 的 ObjectName。

指定者:
介面 RelationServiceMBean 中的 isRelationMBean
參數:
relationId - 標識關係的關係 id
返回:
相應關係 MBean 的 ObjectName;如果該關係不是 MBean,則返回 null。
拋出:
IllegalArgumentException - 如果參數為 null
RelationNotFoundException - 如果不存在與該 id 相關的關係

isRelation

public String isRelation(ObjectName objectName)
                  throws IllegalArgumentException
如果已經將 MBean 作為關係添加在 Relation Service 中,則返回與給定 ObjectName 相關的關係 id。

指定者:
介面 RelationServiceMBean 中的 isRelation
參數:
objectName - 假定關係的 ObjectName
返回:
關係 id(字元串);或返回 null(如果 ObjectName 不是由 Relation Service 處理的關係)
拋出:
IllegalArgumentException - 如果參數為 null

hasRelation

public Boolean hasRelation(String relationId)
                    throws IllegalArgumentException
用給定的關係 id 檢查是否存在 Relation Service 中標識的關係。

指定者:
介面 RelationServiceMBean 中的 hasRelation
參數:
relationId - 標識關係的關係 id
返回:
boolean: 如果存在關係,則返回 true;否則返回 false
拋出:
IllegalArgumentException - 如果參數為 null

getAllRelationIds

public List<String> getAllRelationIds()
返回由 Relation Service 處理的所有關係的所有關係 id。

指定者:
介面 RelationServiceMBean 中的 getAllRelationIds
返回:
String 的 ArrayList

checkRoleReading

public Integer checkRoleReading(String roleName,
                                String relationTypeName)
                         throws IllegalArgumentException,
                                RelationTypeNotFoundException
檢查給定 Role 能否以給定型別的關係進行讀取。

指定者:
介面 RelationServiceMBean 中的 checkRoleReading
參數:
roleName - 要檢查的角色名稱
relationTypeName - 關係型別的名稱
返回:
包裹整數的 Integer,該整數對應於 RoleUnresolved 中用常數表示的可能問題:

- 如果角色可讀,則用 0 表示

- 對應於 RoleStatus.NO_ROLE_WITH_NAME 的整數

- 對應於 RoleStatus.ROLE_NOT_READABLE 的整數

拋出:
IllegalArgumentException - 如果參數為 null
RelationTypeNotFoundException - 如果 Relation Service 中的關係型別未知

checkRoleWriting

public Integer checkRoleWriting(Role role,
                                String relationTypeName,
                                Boolean initFlag)
                         throws IllegalArgumentException,
                                RelationTypeNotFoundException
檢查給定 Role 能否以給定型別的關係進行設置。

指定者:
介面 RelationServiceMBean 中的 checkRoleWriting
參數:
role - 要檢查的角色
relationTypeName - 關係型別的名稱
initFlag - 指定已完成角色的初始化檢查,並且不驗證寫入存取的標誌。
返回:
包裹整數的 Integer,該整數對應於 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 - 如果參數為 null
RelationTypeNotFoundException - 如果是未知關係型別

sendRelationCreationNotification

public void sendRelationCreationNotification(String relationId)
                                      throws IllegalArgumentException,
                                             RelationNotFoundException
發送關係創建通知 (RelationNotification)。通知型別是:

- RelationNotification.RELATION_BASIC_CREATION,如果該關係是 Relation Service 內部的一個物件

- RelationNotification.RELATION_MBEAN_CREATION,如果該關係是作為關係添加的 MBean。

源物件是 Relation Service 本身。

它在 Relation Service createRelation() 和 addRelation() 方法中調用。

指定者:
介面 RelationServiceMBean 中的 sendRelationCreationNotification
參數:
relationId - 更新的關係的關係標識符
拋出:
IllegalArgumentException - 如果參數為 null
RelationNotFoundException - 如果不存在給定關係 id 的關係

sendRoleUpdateNotification

public void sendRoleUpdateNotification(String relationId,
                                       Role newRole,
                                       List<ObjectName> oldValue)
                                throws IllegalArgumentException,
                                       RelationNotFoundException
發送給定關係中的角色更新通知 (RelationNotification)。通知型別是:

- RelationNotification.RELATION_BASIC_UPDATE,如果該關係是 Relation Service 內部的一個物件

- RelationNotification.RELATION_MBEAN_UPDATE,如果該關係是作為關係添加的 MBean。

源物件是 Relation Service 本身。

它在關係 MBean setRole()(針對給定角色)和 setRoles()(針對每個角色)方法(RelationSupport 類別中提供的實作)中調用。

它還在 Relation Service setRole()(針對給定角色)和 setRoles()(針對每個角色)方法中調用。

指定者:
介面 RelationServiceMBean 中的 sendRoleUpdateNotification
參數:
relationId - 已更新關係的關係標識符
newRole - 新的角色(名稱和新值)
oldValue - 舊角色值(ObjectName 物件的列表)
拋出:
IllegalArgumentException - 如果參數為 null
RelationNotFoundException - 如果不存在給定關係 id 的關係

sendRelationRemovalNotification

public void sendRelationRemovalNotification(String relationId,
                                            List<ObjectName> unregMBeanList)
                                     throws IllegalArgumentException,
                                            RelationNotFoundException
發送關係移除通知 (RelationNotification)。通知型別是:

- RelationNotification.RELATION_BASIC_REMOVAL,如果該關係是 Relation Service 內部的一個物件

- RelationNotification.RELATION_MBEAN_REMOVAL,如果該關係是作為關係添加的 MBean。

源物件是 Relation Service 本身。

它在 Relation Service removeRelation() 方法中調用。

指定者:
介面 RelationServiceMBean 中的 sendRelationRemovalNotification
參數:
relationId - 已更新關係的關係標識符
unregMBeanList - 期望因為關係移除而註銷的 MBean 的 ObjectName 列表(可以為 null)
拋出:
IllegalArgumentException - 如果參數為 null
RelationNotFoundException - 如果不存在給定關係 id 的關係

updateRoleMap

public void updateRoleMap(String relationId,
                          Role newRole,
                          List<ObjectName> oldValue)
                   throws IllegalArgumentException,
                          RelationServiceNotRegisteredException,
                          RelationNotFoundException
針對給定關係中給定角色的更新來處理 Relation Service 角色映射的更新。

它在關係 MBean setRole()(針對給定角色)和 setRoles()(針對每個角色)方法(RelationSupport 類別中提供的實作)中調用。

它還在 Relation Service setRole()(針對給定角色)和 setRoles()(針對每個角色)方法中調用。

為了允許 Relation Service 維護一致性(MBean 註銷時)以及能夠執行查詢,更新角色時必須調用此方法。

指定者:
介面 RelationServiceMBean 中的 updateRoleMap
參數:
relationId - 已更新關係的關係標識符
newRole - 新的角色(名稱和新的值)
oldValue - 舊角色值(ObjectName 物件的列表)
拋出:
IllegalArgumentException - 如果參數為 null
RelationServiceNotRegisteredException - 如果 Relation Service 未在 MBean Server 中註冊
RelationNotFoundException - 如果沒有給定 id 的關係。

removeRelation

public void removeRelation(String relationId)
                    throws RelationServiceNotRegisteredException,
                           IllegalArgumentException,
                           RelationNotFoundException
從 Relation Service 移除給定的關係。

發送 RelationNotification 通知,其型別是:

- RelationNotification.RELATION_BASIC_REMOVAL,如果該關係只在 Relation Service 內部

- RelationNotification.RELATION_MBEAN_REMOVAL,如果該關係作為 MBean 註冊。

對於在這樣的關係中參考的 MBean,將不執行任何操作。

指定者:
介面 RelationServiceMBean 中的 removeRelation
參數:
relationId - 要移除的關係的關係 id
拋出:
RelationServiceNotRegisteredException - 如果 Relation Service 未在 MBean Server 中註冊
IllegalArgumentException - 如果參數為 null
RelationNotFoundException - 如果沒有對應於給定關係 id 的關係

purgeRelations

public void purgeRelations()
                    throws RelationServiceNotRegisteredException
肅清關係。

根據 purgeFlag 值,此方法即可以在接收到關係中參考的 MBean 的註銷通知時自動調用(如果將該標誌設置為 true),也可以不調用(如果將該標誌設置為 false)。

在此情況下,使用者負責調用它來維護關係的一致性。一定要記住:如果註銷 MBean 但沒立即執行肅清,這時如果重新使用 ObjectName 並將其指派給關係中另一個參考的 MBean,那麼手動調用此 purgeRelations() 就會出現問題,因為這樣會認為此 ObjectName 就是已註銷的 MBean,不把它看作新的 MBean。

該行為取決於在其中參考註銷的 MBean 的角色數量:

- 如果移除角色中的一個 MBean 參考使其參考數少於最小程度,則必須移除該關係。

- 如果移除 MBean 參考後剩餘的參考數仍然在該容量範圍內,則保持該關係並在調用其 handleMBeanUnregistration() 回調時更新。

指定者:
介面 RelationServiceMBean 中的 purgeRelations
拋出:
RelationServiceNotRegisteredException - 如果該 Relation Service 未在 MBean Server 中註冊。

findReferencingRelations

public Map<String,List<String>> findReferencingRelations(ObjectName mbeanName,
                                                         String relationTypeName,
                                                         String roleName)
                                                  throws IllegalArgumentException
檢索在參考給定 MBean 的參考關係。

這對應於 CIM "Reference" 和 "ReferenceName" 操作。

指定者:
介面 RelationServiceMBean 中的 findReferencingRelations
參數:
mbeanName - MBean 的 ObjectName
relationTypeName - 可以為 null;如果已指定,則將只在搜尋時考慮該型別的關係。其他情況下將考慮所有關係型別。
roleName - 可以為 null;如果已指定,則只返回將在該角色中參考的 MBean 關係。其他情況要考慮所有角色。
返回:
HashMap,密鑰為在其中參考 MBean 的關係的關係 id,並且每個密鑰的值是角色名稱的 ArrayList(因為 MBean 可以在同一關係中的幾個角色中參考)。
拋出:
IllegalArgumentException - 如果參數為 null

findAssociatedMBeans

public Map<ObjectName,List<String>> findAssociatedMBeans(ObjectName mbeanName,
                                                         String relationTypeName,
                                                         String roleName)
                                                  throws IllegalArgumentException
檢索與關係中給定關係相關的 MBean。

這對應於 CIM Associator 和 AssociatorName 操作。

指定者:
介面 RelationServiceMBean 中的 findAssociatedMBeans
參數:
mbeanName - MBean 的 ObjectName
relationTypeName - 可以為 null;如果已指定,則將只在搜尋時考慮該型別的關係。其他情況下將考慮所有關係型別。
roleName - 可以為 null;如果已指定,則只返回將在該角色中參考的 MBean 關係。其他情況要考慮所有角色。
返回:
HashMap,密鑰是與給定 MBean 相關的 MBean 的 ObjectName,而對於每個密鑰而言,該值是這種關係的關係 id 的 ArrayList:密鑰 MBean 與給定的 MBean 相關(因為它們可以與幾個不同的關係相關)。
拋出:
IllegalArgumentException - 如果參數為 null

findRelationsOfType

public List<String> findRelationsOfType(String relationTypeName)
                                 throws IllegalArgumentException,
                                        RelationTypeNotFoundException
返回給定型別的關係的關係 id。

指定者:
介面 RelationServiceMBean 中的 findRelationsOfType
參數:
relationTypeName - 關係型別名稱
返回:
關係 id 的 ArrayList。
拋出:
IllegalArgumentException - 如果參數為 null
RelationTypeNotFoundException - 如果不存在具有該名稱的關係型別。

getRole

public List<ObjectName> getRole(String relationId,
                                String roleName)
                         throws RelationServiceNotRegisteredException,
                                IllegalArgumentException,
                                RelationNotFoundException,
                                RoleNotFoundException
檢索給定關係中給定角色名稱的角色值。

指定者:
介面 RelationServiceMBean 中的 getRole
參數:
relationId - 關係 id
roleName - 角色名稱
返回:
作為角色值的 ObjectName 物件的 ArrayList
拋出:
RelationServiceNotRegisteredException - 如果 Relation Service 未註冊
IllegalArgumentException - 如果參數為 null
RelationNotFoundException - 如果沒有帶給定 id 的關係
RoleNotFoundException - 如果:

- 不存在具有給定名稱的角色

或者

- 角色不可讀。

另請參見:
setRole(java.lang.String, javax.management.relation.Role)

getRoles

public RoleResult getRoles(String relationId,
                           String[] roleNameArray)
                    throws RelationServiceNotRegisteredException,
                           IllegalArgumentException,
                           RelationNotFoundException
檢索給定關係中具有給定名稱的角色值。

指定者:
介面 RelationServiceMBean 中的 getRoles
參數:
relationId - 關係 id
roleNameArray - 要檢索的角色名稱的陣列
返回:
RoleResult 物件,包括一個 RoleList(針對成功檢索到的角色)和一個 RoleUnresolvedList(針對未檢索到的角色)。
拋出:
RelationServiceNotRegisteredException - 如果 Relation Service 未在 MBean Server 中註冊
IllegalArgumentException - 如果參數為 null
RelationNotFoundException - 如果沒有帶給定 id 的關係
另請參見:
setRoles(java.lang.String, javax.management.relation.RoleList)

getAllRoles

public RoleResult getAllRoles(String relationId)
                       throws IllegalArgumentException,
                              RelationNotFoundException,
                              RelationServiceNotRegisteredException
返回關係中存在的所有角色。

指定者:
介面 RelationServiceMBean 中的 getAllRoles
參數:
relationId - 關係 id
返回:
RoleResult 物件,該物件包括一個 RoleList(針對成功檢索到的角色)和一個 RoleUnresolvedList(針對不可讀的角色)。
拋出:
IllegalArgumentException - 如果參數為 null
RelationNotFoundException - 如果沒有指定 id 的關係
RelationServiceNotRegisteredException - 如果 Relation Service 未在 MBean Server 中註冊

getRoleCardinality

public Integer getRoleCardinality(String relationId,
                                  String roleName)
                           throws IllegalArgumentException,
                                  RelationNotFoundException,
                                  RoleNotFoundException
檢索給定角色中當前參考的 MBean 數。

指定者:
介面 RelationServiceMBean 中的 getRoleCardinality
參數:
relationId - 關係 id
roleName - 角色名稱
返回:
當前在此角色中參考的 MBean 數
拋出:
IllegalArgumentException - 如果參數為 null
RelationNotFoundException - 如果沒有帶指定 id 的關係
RoleNotFoundException - 如果不存在具有指定名稱的角色

setRole

public void setRole(String relationId,
                    Role role)
             throws RelationServiceNotRegisteredException,
                    IllegalArgumentException,
                    RelationNotFoundException,
                    RoleNotFoundException,
                    InvalidRoleValueException
設置給定關係中的給定角色。

將按照其在關係的關係型別中提供的相應角色定義檢查角色

通過處理參考的 MBean 註銷,Relation Service 將追蹤更改來保持關係的一致性。

指定者:
介面 RelationServiceMBean 中的 setRole
參數:
relationId - 關係 id
role - 要設置的角色(名稱和新值)
拋出:
RelationServiceNotRegisteredException - 如果 Relation Service 未在 MBean Server 中註冊
IllegalArgumentException - 如果參數為 null
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 註銷,Relation Service 追蹤更改來保持關係的一致性。

指定者:
介面 RelationServiceMBean 中的 setRoles
參數:
relationId - 關係 id
roleList - 要設置的角色列表
返回:
RoleResult 物件,該物件包括一個 RoleList(針對成功設置的角色)和一個 RoleUnresolvedList(針對未成功設置的角色)。
拋出:
RelationServiceNotRegisteredException - 如果 Relation Service 未在 MBean Server 中註冊
IllegalArgumentException - 如果參數為 null
RelationNotFoundException - 如果沒有帶給定 id 的關係
另請參見:
getRoles(java.lang.String, java.lang.String[])

getReferencedMBeans

public Map<ObjectName,List<String>> getReferencedMBeans(String relationId)
                                                 throws IllegalArgumentException,
                                                        RelationNotFoundException
檢索關係的各種角色中參考的 MBean。

指定者:
介面 RelationServiceMBean 中的 getReferencedMBeans
參數:
relationId - 關係 id
返回:
一個 HashMap 映射:

ObjectName -> ArrayList of String(角色名)

拋出:
IllegalArgumentException - 如果參數為 null
RelationNotFoundException - 如果不存在給定關係 id 的關係

getRelationTypeName

public String getRelationTypeName(String relationId)
                           throws IllegalArgumentException,
                                  RelationNotFoundException
返回給定關係的相關關係型別的名稱。

指定者:
介面 RelationServiceMBean 中的 getRelationTypeName
參數:
relationId - 關係 id
返回:
相關關係型別的名稱。
拋出:
IllegalArgumentException - 如果參數為 null
RelationNotFoundException - 如果不存在給定關係 id 的關係

handleNotification

public void handleNotification(Notification notif,
                               Object handback)
出現 JMX 通知時調用。當前處理 MBean 的註銷通知,該 MBean 可以是關係型別中參考,也可以是關係本身。

指定者:
介面 NotificationListener 中的 handleNotification
參數:
notif - 通知。
handback - 一個不透明的物件,可說明偵聽器將有關 MBean 發出者的資訊(可以為 null)聯繫在一起。

getNotificationInfo

public MBeanNotificationInfo[] getNotificationInfo()
返回一個 NotificationInfo 物件,它包含通知的 Java 類別的名稱和發送的通知型別。

指定者:
介面 NotificationBroadcaster 中的 getNotificationInfo
覆寫:
類別 NotificationBroadcasterSupport 中的 getNotificationInfo
返回:
可能的通知陣列。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only