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

クラスRelationSupport

java.lang.Object
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である場合。
  • メソッドの詳細

    • getRole

      指定されたロール名のロール値を取得します。

      ロールが存在し、関係タイプに従って読取り可能かどうかをチェックします。

      定義:
      getRole、インタフェースRelation
      パラメータ:
      roleName - ロール名
      戻り値:
      ロール値となるObjectNameオブジェクトのArrayList
      例外:
      IllegalArgumentException - ロール名がnullの場合
      RoleNotFoundException - 次の場合:

      - 指定された名前のロールが存在しない場合

      - ロールが読取り不可な場合

      RelationServiceNotRegisteredException - 関係サービスがMBeanサーバーに登録されていない場合
      関連項目:
    • getRoles

      指定された名前のロールの値を取得します。

      各ロールが存在し、関係タイプに従って読取り可能かどうかをチェックします。

      定義:
      getRoles、インタフェースRelation
      パラメータ:
      roleNameArray - 取得されるロールの名前から成る配列
      戻り値:
      RoleResultオブジェクト。取得に成功したロールのRoleListと取得されなかったロールのRoleUnresolvedListを含む
      例外:
      IllegalArgumentException - ロール名がnullの場合
      RelationServiceNotRegisteredException - 関係サービスがMBeanサーバーに登録されていない場合
      関連項目:
    • getAllRoles

      関係に含まれるすべてのロールを返します。
      定義:
      getAllRoles、インタフェースRelation
      戻り値:
      RoleResultオブジェクト。取得に成功したロールのRoleListと読み取れなかったロールのRoleUnresolvedListを含む。
      例外:
      RelationServiceNotRegisteredException - 関係サービスがMBeanサーバーに登録されていない場合
    • retrieveAllRoles

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

      public Integer getRoleCardinality(String roleName) throws IllegalArgumentException, RoleNotFoundException
      指定されたロール内で現在参照されているMBeanの数を返します。
      定義:
      getRoleCardinality、インタフェースRelation
      パラメータ:
      roleName - ロール名
      戻り値:
      ロール内の現在参照されているMBeanの数
      例外:
      IllegalArgumentException - ロール名がnullの場合
      RoleNotFoundException - 指定された名前のロールが存在しない場合
    • setRole

      指定されたロールを設定します。

      関係の関係タイプに含まれている対応するロール定義に従って、ロールをチェックします。

      通知を送信します。関係がMBeanであるかどうかによって、RelationNotificationの型はRELATION_BASIC_UPDATEまたはRELATION_MBEAN_UPDATEになります。

      定義:
      setRole、インタフェースRelation
      パラメータ:
      role - 設定されるロール(名前と新しい値)
      例外:
      IllegalArgumentException - ロールがnullの場合
      RoleNotFoundException - 指定された名前のロールが存在しない場合、またはロールが書込み可能でない場合(ロールの初期化時には、書込みアクセス・モードのチェックは行われない)
      InvalidRoleValueException - ロールに対して提供された値が無効な場合:

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

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

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

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

      RelationServiceNotRegisteredException - 関係サービスがMBeanサーバーに登録されていない場合
      RelationTypeNotFoundException - 関係サービスに関係タイプが宣言されていない場合
      RelationNotFoundException - 関係サービスに関係が追加されていない場合
      関連項目:
    • setRoles

      指定されたロールを設定します。

      関係の関係タイプに含まれている対応するロール定義に従って、ロールをチェックします。

      ロールが更新されるたびに通知を送信します。関係がMBeanであるかどうかによって、RelationNotificationの型はRELATION_BASIC_UPDATEまたはRELATION_MBEAN_UPDATEになります。

      定義:
      setRoles、インタフェースRelation
      パラメータ:
      list - 設定されるロールのリスト
      戻り値:
      RoleResultオブジェクト。設定に成功したロールのRoleListと設定されなかったロールのRoleUnresolvedListを含む
      例外:
      IllegalArgumentException - ロール・リストがnullの場合
      RelationServiceNotRegisteredException - 関係サービスがMBeanサーバーに登録されていない場合
      RelationTypeNotFoundException - 関係サービスに関係タイプが宣言されていない場合
      RelationNotFoundException - 関係サービスに関係MBeanが追加されていない場合
      関連項目:
    • handleMBeanUnregistration

      ロールで参照されるMBeanの登録が解除された場合に関係サービスによって使用されるコールバックです。

      関係サービスは、このメソッドを呼び出して、関係に、登録解除の影響を反映するためのアクションを取らせます。

      このメソッドは、ユーザーからは呼び出されません。

      現在の実装は、現在の値(参照対象のMBeanのObjectNameのリスト)を使ってロールを設定します。登録解除されているものは使用しません。

      定義:
      handleMBeanUnregistration、インタフェースRelation
      パラメータ:
      objectName - 登録解除されたMBeanのObjectName
      roleName - MBeanの参照に使用されるロール名
      例外:
      IllegalArgumentException - パラメータがnullの場合
      RoleNotFoundException - 関係内にロールが存在しないか、書込み不可である場合
      InvalidRoleValueException - ロール値が関連するロール情報に準拠していない場合(関係サービスから呼び出された場合は起こり得ない条件)
      RelationServiceNotRegisteredException - 関係サービスがMBeanサーバーに登録されていない場合
      RelationTypeNotFoundException - 関係サービスに関係タイプが宣言されていない場合
      RelationNotFoundException - このメソッドが、関係サービスに追加されていない関係MBeanに対して呼び出された場合
    • 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の場合