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

クラスRelationSupport

  • すべての実装されたインタフェース:
    MBeanRegistration, Relation, RelationSupportMBean


    public class RelationSupport
    extends Object
    implements RelationSupportMBean, MBeanRegistration
    RelationSupportオブジェクトは、ロール数に制限のない任意の関係タイプの単純な関係(ロールのみ、プロパティやメソッドなし)を表現するために、関係サービスによって内部的に使用されます。 これは内部表現なので、ユーザーには公開されません。

    RelationSupportクラスは、標準MBeanの設計パターンに準拠しています。 したがって、ユーザーは、RelationSupportオブジェクトをMBeanとしてインスタンス化し(MBeanの設計パターンに準拠しているため)、MBean Serverに登録して関係サービスに追加することができます。

    また、独自のMBean関係クラスの作成時にRelationSupportを拡張して、必須インタフェース(下記参照)の実装を取得することもできます。

    ユーザー関係MBeanクラス内にRelationSupportオブジェクトとなるメンバーを追加し、すべてをこのメンバーに委譲することによって必須インタフェースを実装する方法もあります。

    RelationSupportは、関係サービスによって処理されるRelationインタフェースを実装します。

    関係サービスにアクセスするため、MBean ServerにMBeanとして登録されている場合は、この登録先MBean Serverを取得するためのMBeanRegistrationインタフェースも実装します。

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

      • RelationSupport

        public RelationSupport​(String relationId,
                               ObjectName relationServiceName,
                               String relationTypeName,
                               RoleList list)
                        throws InvalidRoleValueException,
                               IllegalArgumentException
        RelationSupportオブジェクトを作成します。

        このコンストラクタは、RelationSupportオブジェクトがユーザーによってMBeanとして登録されたとき、またはRelationSupportを拡張するクラスを持つユーザー関係MBeanを作成するときに使用する必要があります。

        関係サービス・レベルでは何も行われません。つまり、RelationSupportオブジェクトはRelationServiceに追加されず、適切な値が提供されたかどうかのチェックも行われません。 オブジェクトは、次の場合を除いて必ず作成されます。

        - 必須パラメータがすべてnullの場合

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

        関係として処理するためには、RelationSupportオブジェクトを関係サービス・メソッドaddRelation()を使って関係サービスに追加する必要があります。

        パラメータ:
        relationId - 関係サービス内の関係を一意に識別するために使用される関係識別子

        関係サービス内で一意でなければいけません。

        relationServiceName - 関係の登録先となる関係サービスのObjectName

        更新オペレーション(セット)をチェックする必要があるため、指定された関係の型定義を認識する関係サービスでなければならない

        relationTypeName - 関係タイプの名前。

        指定された関係サービス内で作成されたものでなければならない

        list - 関係を初期化するためのロール(Roleオブジェクト)のリスト。 nullも可

        関連付けられた関係タイプの関係情報に準拠していなければいけません。

        例外:
        InvalidRoleValueException - 同じ名前が2つのロールで使用されている場合
        IllegalArgumentException - 必須パラメータ(関係ID、関係サービスObjectName、関係タイプ名)のいずれかがnullの場合。
      • RelationSupport

        public RelationSupport​(String relationId,
                               ObjectName relationServiceName,
                               MBeanServer relationServiceMBeanServer,
                               String relationTypeName,
                               RoleList list)
                        throws InvalidRoleValueException,
                               IllegalArgumentException
        RelationSupportオブジェクトを作成します。

        このコンストラクタは、RelationSupportオブジェクトへの委譲を行うことによって関係で利用できるようにする必要があるインタフェースを、ユーザー関係MBeanが実装したときに使用する必要があります。

        このオブジェクトは、関係を処理する関係サービスを認識する必要があります。 したがって、この関係サービスの登録先のMBean Serverも認識する必要があります。

        制限により、関係MBeanは、それを処理する関係サービスと同じMBeanサーバーに登録する必要があります。 このため、ユーザー関係MBeanを作成し、登録する必要があります。ユーザー関係MBeanの登録後、識別されたMBeanサーバー内部で、ラップされたRelationSupportオブジェクトを作成できます。

        関係サービス・レベルでは何も行われません。つまり、RelationSupportオブジェクトはRelationServiceに追加されず、適切な値が提供されたかどうかのチェックも行われません。 オブジェクトは、次の場合を除いて必ず作成されます。

        - 必須パラメータがすべてnullの場合

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

        関係として処理するためには、RelationSupportオブジェクトを関係サービス・メソッドaddRelation()を使って関係サービスに追加する必要があります。

        パラメータ:
        relationId - 関係サービス内の関係を一意に識別するために使用される関係識別子

        関係サービス内で一意でなければいけません。

        relationServiceName - 関係の登録先となる関係サービスのObjectName

        更新オペレーション(セット)をチェックする必要があるため、指定された関係の型定義を認識する関係サービスでなければならない

        relationServiceMBeanServer - MBeanのラップが登録されている、またはこれから登録されるMBeanサーバー。

        関連サービスが登録されている、またはこれから登録されるMBean Serverでなければならない

        relationTypeName - 関係タイプの名前。

        指定された関係サービス内で作成されたものでなければならない

        list - 関係を初期化するためのロール(Roleオブジェクト)のリスト。 nullも可

        関連付けられた関係タイプの関係情報に準拠していなければいけません。

        例外:
        InvalidRoleValueException - 同じ名前が2つのロールで使用されている場合
        IllegalArgumentException - 必須パラメータ(関係ID、関係サービスObjectName、関係サービスMBeanServer、関係タイプ名)のいずれかがnullである場合。
    • メソッドの詳細

      • retrieveAllRoles

        public RoleList retrieveAllRoles​()
        読取りモードをチェックしないで、関係に含まれるすべてのロールを返します。
        定義:
        retrieveAllRoles、インタフェース: Relation
        戻り値:
        RoleList
      • getReferencedMBeans

        public Map<ObjectName,List<String>> getReferencedMBeans​()
        関係のさまざまなロールで参照されるMBeanを取得します。
        定義:
        getReferencedMBeans、インタフェース: Relation
        戻り値:
        HashMapマッピング:

        ObjectName→String (ロール名)から成るArrayList

      • getRelationTypeName

        public String getRelationTypeName​()
        関連付けられた関係タイプの名前を返します。
        定義:
        getRelationTypeName、インタフェース: Relation
        戻り値:
        関係タイプの名前
      • getRelationServiceName

        public ObjectName getRelationServiceName​()
        関係を処理する関係サービスのObjectNameを返します。
        定義:
        getRelationServiceName、インタフェース: Relation
        戻り値:
        関係サービスのObjectName。
      • getRelationId

        public String getRelationId​()
        関係サービス内の関係を一意に識別するために使用される関係識別子を返します。
        定義:
        getRelationId、インタフェース: Relation
        戻り値:
        関係ID。
      • preRegister

        public ObjectName preRegister​(MBeanServer server,
                                      ObjectName name)
                               throws Exception
        インタフェースからコピーされた説明: MBeanRegistration
        MBeanサーバーに登録する前に必要なオペレーションをMBeanが実行することを許可します。 MBeanの名前を指定しないと、MBeanにより、登録用の名前が提供されます。 例外がスローされた場合、MBeanはMBeanサーバーに登録されません。
        定義:
        preRegister、インタフェース: MBeanRegistration
        パラメータ:
        server - MBeanサーバー。MBeanはここに登録される。
        name - MBeanのオブジェクト名。 MBeanServerインタフェース内のcreateMBeanまたはregisterMBeanメソッドのnameパラメータがnullの場合、この名前もnullになる。 この場合、このメソッドは、新しいMBean用にnull以外のObjectNameを必ず返す。
        戻り値:
        MBeanの登録名。 nullは指定できない。 nameパラメータがnull以外の場合、通常は値が返されるが、これは必須ではない。
        例外:
        Exception - この例外は、MBeanサーバーにキャッチされ、MBeanRegistrationExceptionとして再スローされる。
      • postRegister

        public void postRegister​(Boolean registrationDone)
        インタフェースからコピーされた説明: MBeanRegistration
        MBeanサーバーへの登録が成功または失敗したあと、MBeanが必要なオペレーションを実行できるようにします。

        このメソッドの実装がRuntimeExceptionまたはErrorをスローする場合、MBeanサーバーはRuntimeMBeanExceptionまたはRuntimeErrorExceptionの内部でこれらをそれぞれ再スローします。 ただし、postRegisterで例外をスローしてもMBeanの状態は変化しません。MBeanがすでに登録されている(registrationDonetrueである)場合、MBeanの登録は解除されません。

        createMBean()またはregisterMBean()を呼び出すコードでは、このような例外が発行されたときにMBeanの登録が失敗したとみなされることがあるため、これによって混乱が生じる可能性があります。 したがって、回避できる場合はpostRegisterの実装で実行時例外またはエラーをスローしないことをお勧めします。

        定義:
        postRegister、インタフェース: MBeanRegistration
        パラメータ:
        registrationDone - MBeanがMBeanサーバーに正常に登録されたかどうかを示す。 登録に失敗した場合の値はfalse。
      • preDeregister

        public void preDeregister​()
                           throws Exception
        インタフェースからコピーされた説明: MBeanRegistration
        MBeanサーバーから登録解除する前に、MBeanが必要なオペレーションを実行できるようにします。
        定義:
        preDeregister、インタフェース: MBeanRegistration
        例外:
        Exception - この例外は、MBeanサーバーにキャッチされ、MBeanRegistrationExceptionとして再スローされる。
      • postDeregister

        public void postDeregister​()
        インタフェースからコピーされた説明: MBeanRegistration
        MBeanサーバーから登録解除したあと、MBeanが必要なオペレーションを実行できるようにします。

        このメソッドの実装がRuntimeExceptionまたはErrorをスローする場合、MBeanサーバーはRuntimeMBeanExceptionまたはRuntimeErrorExceptionの内部でこれらをそれぞれ再スローします。 ただし、postDeregisterで例外をスローしてもMBeanの状態は変化しません。MBeanはすでに正常に登録解除されており、その状態のままになります。

        unregisterMBean()を呼び出すコードでは、MBeanの登録解除が失敗したとみなされることがあるため、これによって混乱が生じる可能性があります。 したがって、回避できる場合はpostDeregisterの実装で実行時例外またはエラーをスローしないことをお勧めします。

        定義:
        postDeregister、インタフェース: MBeanRegistration
      • isInRelationService

        public Boolean isInRelationService​()
        オブジェクトを引き続き関係サービスで処理するかどうかを指定する内部フラグを返します。
        定義:
        isInRelationService、インタフェース: RelationSupportMBean
        戻り値:
        Boolean型。オブジェクトを引き続き関係サービスで処理する場合はBoolean.TRUE、それ以外の場合はBoolean.FALSE
      • setRelationServiceManagementFlag

        public void setRelationServiceManagementFlag​(Boolean flag)
                                              throws IllegalArgumentException
        インタフェースからコピーされた説明: RelationSupportMBean

        この関係を関係サービスで処理するかどうかを指定します。

        関係サービスは管理インタフェースを使用して関係にアクセスするので、このメソッドは公開の必要があります。 このメソッドの使用は推奨されていません。 たとえ使用しても、関係サービス内の関係オブジェクトの登録に影響はありませんが、誤った情報が提供される恐れがあるからです。

        定義:
        setRelationServiceManagementFlag、インタフェース: RelationSupportMBean
        パラメータ:
        flag - 関係を関係サービスで処理するかどうか
        例外:
        IllegalArgumentException - パラメータがnullの場合