モジュール java.management
パッケージ javax.management.relation

クラスRelationService

  • すべての実装されたインタフェース:
    EventListener, MBeanRegistration, NotificationBroadcaster, NotificationEmitter, NotificationListener, RelationServiceMBean

    public class RelationService
    extends NotificationBroadcasterSupport
    implements RelationServiceMBean, MBeanRegistration, NotificationListener
    関係サービスは、関係タイプと関係を作成および削除し、整合性を処理し、およびクエリー・メカニズムを提供します。

    関係サービスは、関係の削除時に通知を送信するため、NotificationBroadcasterSupportを拡張することによってNotificationBroadcasterを実装します。

    また、関係ロール内の参照対象のMBeanおよび関係MBeanの登録解除に関する通知を受信できるようにするため、NotificationListenerインタフェースを実装します。

    さらに、ObjectNameとMBean Serverを取得できるように、MBeanRegistrationインタフェースを実装します。

    導入されたバージョン:
    1.5
    • コンストラクタの詳細

      • RelationService

        public RelationService​(boolean immediatePurgeFlag)
        コンストラクタです。
        パラメータ:
        immediatePurgeFlag - 関係内の参照対象のMBeanの登録解除の通知をいつ受信したか、関係をただちに「パージ」(有効でなくなった関係を検索)する必要があるかどうか、またはpurgeRelationsメソッドが明示的に呼び出される場合にのみパージが実行されるかどうかを示すフラグ。

        trueの場合、ただちにパージを行う必要があります。

    • メソッドの詳細

      • getPurgeFlag

        public boolean getPurgeFlag()
        関係内の参照対象のMBeanの登録解除の通知をいつ受信したか、関係をただちに「パージ」(有効でなくなった関係を検索)する必要があるかどうか、またはpurgeRelationsメソッドが明示的に呼び出される場合にのみパージが実行されるかどうかを示すフラグを返します。

        trueの場合、ただちにパージを行う必要があります。

        定義:
        getPurgeFlag、インタフェースRelationServiceMBean
        戻り値:
        自動的にパージが行われる場合はtrue
        関連項目:
        setPurgeFlag(boolean)
      • setPurgeFlag

        public void setPurgeFlag​(boolean purgeFlag)
        関係内の参照対象のMBeanの登録解除の通知をいつ受信したか、関係をただちに「パージ」(有効でなくなった関係を検索)する必要があるかどうか、またはpurgeRelationsメソッドが明示的に呼び出される場合にのみパージが実行されるかどうかを示すフラグを設定します。

        trueの場合、ただちにパージを行う必要があります。

        定義:
        setPurgeFlag、インタフェースRelationServiceMBean
        パラメータ:
        purgeFlag - フラグ
        関連項目:
        getPurgeFlag()
      • createRelationType

        public void createRelationType​(String relationTypeName,
                                       RoleInfo[] roleInfoArray)
                                throws IllegalArgumentException,
                                       InvalidRelationTypeException
        RoleInfoオブジェクトから提供されたロール情報を使って、関係タイプ(RelationTypeSupportオブジェクト)を作成し、関係サービスへ追加します。
        定義:
        createRelationType、インタフェースRelationServiceMBean
        パラメータ:
        relationTypeName - 関係タイプの名前
        roleInfoArray - ロール情報の配列
        例外:
        IllegalArgumentException - パラメータがnullの場合
        InvalidRelationTypeException - 次の場合:

        - 同じ名前の関係タイプがすでに存在する場合

        - 同じ名前が2つの異なったロール情報で使用されている場合

        - ロール情報が提供されなかった場合

        - ロール情報としてnullが提供された場合

      • addRelationType

        public void addRelationType​(RelationType relationTypeObj)
                             throws IllegalArgumentException,
                                    InvalidRelationTypeException
        指定されたオブジェクトを関係タイプとして追加します。 このオブジェクトは、RelationTypeインタフェースを実装する必要があります。
        定義:
        addRelationType、インタフェースRelationServiceMBean
        パラメータ:
        relationTypeObj - 関係タイプ・オブジェクト(RelationTypeインタフェースを実装)
        例外:
        IllegalArgumentException - パラメータがnullである場合、またはrelationTypeObj.getRelationTypeName()がnullを返す場合
        InvalidRelationTypeException - 次の場合:

        - 同じ名前が2つの異なったロールで使用されている場合

        - ロール情報が提供されなかった場合

        - ロール情報としてnullが提供された場合

        - 同じ名前の関係タイプがすでに存在する場合

      • getAllRelationTypeNames

        public List<String> getAllRelationTypeNames()
        既知のすべての関係タイプの名前を取得します。
        定義:
        getAllRelationTypeNames、インタフェースRelationServiceMBean
        戻り値:
        関係タイプの名前(String)のArrayList
      • createRelation

        public void createRelation​(String relationId,
                                   String relationTypeName,
                                   RoleList roleList)
                            throws RelationServiceNotRegisteredException,
                                   IllegalArgumentException,
                                   RoleNotFoundException,
                                   InvalidRelationIdException,
                                   RelationTypeNotFoundException,
                                   InvalidRoleValueException
        指定された関係タイプの単純な関係(RelationSupportオブジェクト)を作成し、これを関係サービスに追加します。

        ロールはパラメータに指定されたロール・リストに従って初期化されます。 この方法で初期化されないロールは、ObjectNameの空のArrayListに設定されます。

        RELATION_BASIC_CREATION型のRelationNotificationが送信されます。

        定義:
        createRelation、インタフェースRelationServiceMBean
        パラメータ:
        relationId - 関係サービス内の関係を一意に識別するために使用される関係識別子
        relationTypeName - 関係サービス内に作成する必要がある関係タイプの名前
        roleList - 関係のロールを初期化するためのロール・リスト(nullも可)
        例外:
        RelationServiceNotRegisteredException - 関係サービスがMBeanサーバーに登録されていない場合
        IllegalArgumentException - パラメータがnullの場合。ただし、ロールの初期化が行われない場合nullにすることができるロール・リストを除く
        RoleNotFoundException - 関係タイプ内に存在しないロールに値が提供された場合
        InvalidRelationIdException - 関係IDがすでに使用されている場合
        RelationTypeNotFoundException - 関係サービスにとって未知の関係タイプである場合
        InvalidRoleValueException - 次の場合:

        - 同じ名前が2つの異なったロールで使用されている場合

        - 指定された値に含まれる参照対象のMBeanの数が予想最小値より小さい場合

        - 指定された値に含まれる参照対象のMBeanの数が予想最大値を超えている場合

        - 値に含まれる参照対象のMBeanのうち1つが、そのロールのMBeanクラスのオブジェクトでない場合

        - そのロールのMBeanが存在しない場合

      • addRelation

        public void addRelation​(ObjectName relationObjectName)
                         throws IllegalArgumentException,
                                RelationServiceNotRegisteredException,
                                NoSuchMethodException,
                                InvalidRelationIdException,
                                InstanceNotFoundException,
                                InvalidRelationServiceException,
                                RelationTypeNotFoundException,
                                RoleNotFoundException,
                                InvalidRoleValueException
        ユーザーによって作成されてMBean Serverに登録されるMBeanを、関係として関係サービスに追加します。

        MBeanを関係として追加するためには、次の条件が満たされている必要があります。

        - Relationインタフェースを実装している

        - RelationService ObjectName用として現在の関係サービスのObjectNameを持っている

        - 現在の関係サービス内で一意かつ未使用の関係IDを持っている

        - 関係タイプ用として関係サービス内で作成された関係タイプを持っている

        - 関係タイプ内で提供されたロール情報に適合するロールを持っている

        定義:
        addRelation、インタフェースRelationServiceMBean
        パラメータ:
        relationObjectName - 追加される関係MBeanのObjectName
        例外:
        IllegalArgumentException - パラメータがnullの場合
        RelationServiceNotRegisteredException - 関係サービスがMBeanサーバーに登録されていない場合
        NoSuchMethodException - MBeanがRelationインタフェースを実装していない場合
        InvalidRelationIdException - 次の場合:

        - MBean内に関係識別子が存在しない

        - 関係識別子が関係サービスですでに使用されている場合

        InstanceNotFoundException - 指定されたObjectNameのMBeanが登録されていない場合
        InvalidRelationServiceException - 次の場合:

        - MBean内に関係サービス名が存在しない場合

        - MBean内の関係サービス名が現在の関係サービスの関係サービス名でない場合

        RelationTypeNotFoundException - 次の場合:

        - MBean内に関係タイプ名が存在しない場合

        - MBean内の関係タイプ名が関係サービス内に作成された関係タイプに対応していない場合

        InvalidRoleValueException - 次の場合:

        - ロールに含まれる参照対象のMBeanの数が予想最小値より小さい場合

        - ロールに含まれる参照対象のMBeanの数が予想最大値を超えている場合

        - 値に含まれる参照対象のMBeanのうち1つが、そのロールのMBeanクラスのオブジェクトでない場合

        - ロールに提供されたMBeanが存在しない場合

        RoleNotFoundException - 関係タイプ内に存在しないロールに値が提供された場合
      • isRelation

        public String isRelation​(ObjectName objectName)
                          throws IllegalArgumentException
        MBeanが関係として関係サービスに追加されている場合、指定されたObjectNameに関連付けられる関係IDを返します。
        定義:
        isRelation、インタフェースRelationServiceMBean
        パラメータ:
        objectName - 仮定された関係のObjectName
        戻り値:
        関係ID (String)。ObjectNameが関係サービスによって処理される関係でない場合はnull
        例外:
        IllegalArgumentException - パラメータがnullの場合
      • hasRelation

        public Boolean hasRelation​(String relationId)
                            throws IllegalArgumentException
        関係サービス内に指定された関係IDで識別される関係があるかどうかをチェックします。
        定義:
        hasRelation、インタフェースRelationServiceMBean
        パラメータ:
        relationId - 関係を識別する関係ID
        戻り値:
        boolean型。関係が存在する場合はtrue、存在しない場合はfalse
        例外:
        IllegalArgumentException - パラメータがnullの場合
      • getAllRelationIds

        public List<String> getAllRelationIds()
        関係サービスによって処理されるすべての関係のすべての関係IDを返します。
        定義:
        getAllRelationIds、インタフェースRelationServiceMBean
        戻り値:
        StringのArrayList
      • checkRoleReading

        public Integer checkRoleReading​(String roleName,
                                        String relationTypeName)
                                 throws IllegalArgumentException,
                                        RelationTypeNotFoundException
        指定された型の関係で、指定されたRoleの読取りが可能かどうかをチェックします。
        定義:
        checkRoleReading、インタフェースRelationServiceMBean
        パラメータ:
        roleName - チェックされるロールの名前
        relationTypeName - 関係タイプの名前
        戻り値:
        発生の可能性がある問題に対応する整数型(RoleUnresolved内の定数で表される)をラップするInteger

        - ロールの読取りが可能な場合は0

        - RoleStatus.NO_ROLE_WITH_NAMEに対応する整数型

        - RoleStatus.ROLE_NOT_READABLEに対応する整数型

        例外:
        IllegalArgumentException - パラメータがnullの場合
        RelationTypeNotFoundException - 関係サービスにとって未知の関係タイプである場合
      • checkRoleWriting

        public Integer checkRoleWriting​(Role role,
                                        String relationTypeName,
                                        Boolean initFlag)
                                 throws IllegalArgumentException,
                                        RelationTypeNotFoundException
        指定された型の関係で、指定されたRoleの設定が可能かどうかをチェックします。
        定義:
        checkRoleWriting、インタフェースRelationServiceMBean
        パラメータ:
        role - チェックされるロール
        relationTypeName - 関係タイプの名前
        initFlag - ロールの初期化のためにチェックが行われたことを示すフラグ。書込みアクセスの検証は行われない
        戻り値:
        発生の可能性がある問題に対応する整数型(RoleUnresolved内の定数で表される)をラップするInteger

        - ロールの設定が可能な場合は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。関係が関係サービスの内部オブジェクトである場合

        - RelationNotification.RELATION_MBEAN_CREATION。関係が関係として追加されたMBeanである場合

        ソース・オブジェクトは関係サービス自体です。

        関係サービスのcreateRelation()メソッドおよびaddRelation()メソッドで呼び出されます。

        定義:
        sendRelationCreationNotification、インタフェースRelationServiceMBean
        パラメータ:
        relationId - 更新された関係の関係識別子
        例外:
        IllegalArgumentException - パラメータがnullの場合
        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である場合

        ソース・オブジェクトは関係サービス自体です。

        関係MBeanのsetRole()メソッド(指定されたロール用)およびsetRoles()メソッド(各ロール用)で呼び出されます。この実装はRelationSupportクラスで提供されます。

        関係サービスのsetRole()メソッド(指定されたロール用)およびsetRoles()メソッド(各ロール用)でも呼び出せます。

        定義:
        sendRoleUpdateNotification、インタフェースRelationServiceMBean
        パラメータ:
        relationId - 更新された関係の関係識別子
        newRole - 新しいロール(名前と新しい値)
        oldValue - 古いロール値(ObjectNameオブジェクトのList)
        例外:
        IllegalArgumentException - パラメータがnullの場合
        RelationNotFoundException - 指定された関係IDの関係が存在しない場合
      • sendRelationRemovalNotification

        public void sendRelationRemovalNotification​(String relationId,
                                                    List<ObjectName> unregMBeanList)
                                             throws IllegalArgumentException,
                                                    RelationNotFoundException
        関係削除の通知(RelationNotification)を送信します。 通知型は次のとおりです。

        - RelationNotification.RELATION_BASIC_REMOVAL。関係が関係サービスの内部オブジェクトである場合

        - RelationNotification.RELATION_MBEAN_REMOVAL。関係が関係として追加されたMBeanである場合

        ソース・オブジェクトは関係サービス自体です。

        関係サービスのremoveRelation()メソッドで呼び出されます。

        定義:
        sendRelationRemovalNotification、インタフェースRelationServiceMBean
        パラメータ:
        relationId - 更新された関係の関係識別子
        unregMBeanList - 関係の削除の結果、登録解除されるMBeanのObjectNameのリスト(nullも可)
        例外:
        IllegalArgumentException - パラメータがnullの場合
        RelationNotFoundException - 指定された関係IDの関係が存在しない場合
      • updateRoleMap

        public void updateRoleMap​(String relationId,
                                  Role newRole,
                                  List<ObjectName> oldValue)
                           throws IllegalArgumentException,
                                  RelationServiceNotRegisteredException,
                                  RelationNotFoundException
        指定された関係内の指定されたロールを更新するため、関係サービス・ロール・マップの更新を処理します。

        関係MBeanのsetRole()メソッド(指定されたロール用)およびsetRoles()メソッド(各ロール用)で呼び出されます。この実装はRelationSupportクラスで提供されます。

        関係サービスのsetRole()メソッド(指定されたロール用)およびsetRoles()メソッド(各ロール用)でも呼び出せます。

        関係サービスがMBeanの登録解除時も整合性を確保し、クエリーを実行できるようにするには、ロールの更新時にこのメソッドを呼び出す必要があります。

        定義:
        updateRoleMap、インタフェースRelationServiceMBean
        パラメータ:
        relationId - 更新された関係の関係識別子
        newRole - 新しいロール(名前と新しい値)
        oldValue - 古いロール値(ObjectNameオブジェクトのList)
        例外:
        IllegalArgumentException - パラメータがnullの場合
        RelationServiceNotRegisteredException - 関係サービスがMBeanサーバーに登録されていない場合
        RelationNotFoundException - 指定されたIDに対応する関係が存在しない場合
      • purgeRelations

        public void purgeRelations()
                            throws RelationServiceNotRegisteredException
        関係をパージします。

        このメソッドは、purgeFlag値に依存します。フラグがtrueに設定されている場合は、関係内の参照対象のMBeanの登録解除を知らせる通知を受信したとき自動的に呼び出されます。フラグがfalseに設定されている場合は呼び出されません。

        その場合、関係の整合性を維持するためにこのメソッドを呼び出すかどうかはユーザーが決定します。 MBeanの登録が解除された後ただちにパージが行われない場合、ObjectNameが再利用され、関係内の参照対象の別のMBeanに割り当てられるときにこのpurgeRelations()メソッドを手動で呼び出すと、問題が発生します。これは、新しいMBeanが認識されず、ObjectNameが登録解除されたMBeanに対応すると見なされるからです。

        動作は、登録解除されたMBeanが参照されるロールのカーディナリティによって決定されます。

        - ロール内のMBean参照を1つ削除したとき参照の数が最小値より少なくなる場合は、関係を削除する必要がある

        - MBean参照を削除したあと残った参照の数がカーディナリティ範囲内である場合は、関係を保持し、handleMBeanUnregistration()コールバックを呼び出して更新する

        定義:
        purgeRelations、インタフェースRelationServiceMBean
        例外:
        RelationServiceNotRegisteredException - 関係サービスがMBeanサーバーに登録されていない場合
      • findReferencingRelations

        public Map<String,​List<String>> findReferencingRelations​(ObjectName mbeanName,
                                                                       String relationTypeName,
                                                                       String roleName)
                                                                throws IllegalArgumentException
        指定されたMBeanが参照される関係を取得します。

        これは、CIMの「Reference」および「ReferenceName」オペレーションに対応します。

        定義:
        findReferencingRelations、インタフェースRelationServiceMBean
        パラメータ:
        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に関連付けられたMBeanを取得します。

        これは、CIMのAssociatorおよびAssociatorNameオペレーションに対応します。

        定義:
        findAssociatedMBeans、インタフェースRelationServiceMBean
        パラメータ:
        mbeanName - MBeanのObjectName
        relationTypeName - nullも可。指定した場合、検索ではそのタイプの関係のみが考慮される。 それ以外の場合、すべての関係タイプが考慮される。
        roleName - nullも可。指定した場合、そのロール内のMBeanが参照される関係のみが考慮される。 それ以外の場合、すべてのロールが考慮される。
        戻り値:
        HashMap。キーは指定されたMBeanに関連付けられたMBeanのObjectName。各キーの値は、キーMBeanが指定されたMBeanに関連付けられている関係の関係IDから成るArrayList (これらは複数の異なった関係に関連付け可能)
        例外:
        IllegalArgumentException - パラメータがnullの場合
      • handleNotification

        public void handleNotification​(Notification notif,
                                       Object handback)
        JMX通知が発生したとき呼び出されます。 一般に、関係ロール内の参照対象のMBean、または関係になるMBeanの登録解除の通知を処理します。
        定義:
        handleNotification、インタフェースNotificationListener
        パラメータ:
        notif - 通知
        handback - リスナーによるMBeanエミッタの情報の関連付けに役立つ、不透明なオブジェクト(nullも使用可能)。