モジュール java.management

パッケージ javax.management.relation

関係サービスの定義を提供します。 関係サービスは、MBeanサーバー内のMBean間の関係を記録するために使用されます。 関係サービスそれ自体がMBeanです。 1台のMBeanサーバーに、RelationService MBeanの複数のインスタンスを登録できます。

関係タイプは、MBean間の関係を定義します。 その関係においてMBeanが担当するロールを含みます。 通常、1つの関係タイプに2つ以上のロールが含まれます。

関係は、関係タイプの名前付きのインスタンスです。関係では、ロール内の特定のMBeanはObjectNameによって表されます。

たとえば、アプリケーション内のモジュールを表すModule MBeanがあるとします。 DependsOn関係タイプは一部のモジュールが他のモジュールに依存しているという関係を表現でき、モジュールの開始または停止順を決めるために使用できます。 DependsOn関係タイプは、dependentdependedOnの2つのロールを持ちます。

どのロールも型付きです。つまり、ロール内に表示されるMBeanは、そのロールの型のインスタンスである必要があります。 DependsOnの例では、両方のロールがModule型になります。

すべてのロールがカーディナリティを持ちます。それにより、指定された関係インスタンスに含まれる特定のロール内に表示できるMBean数に上限値と下限値が設定されます。 通常は、上限値、下限値ともに1で、ロール内に表示されるMBean数は1です。 カーディナリティは、関係インスタンスごとにロール内のMBean数を制限するだけです。 関係タイプのインスタンス数に関係なく、同じロール内には同じMBeanが存在できます。 DependsOnの例では、あるモジュールが依存できるその他のモジュール数に制限はありません。しかし、関係インスタンスは、常に単一のdependentモジュールと単一のdependedOnモジュールをリンクします。

関係タイプは、RelationTypeインタフェースを実装するオブジェクト(通常RelationTypeSupport)として、明示的に作成できます。 関係サービスのcreateRelationTypeメソッドを使って、暗黙的に作成することもできます。

関係インスタンスは、Relationインタフェースを実装するオブジェクト(通常RelationSupport)として、明示的に作成できます。 (RelationSupport自体が有効なMBeanなので、オプションとしてMBeanサーバーに登録可能です。) 一方、関係インスタンスを暗黙的に作成するには、関係サービスのcreateRelationメソッドを使用します。

DependsOnの例は次のようにコード化できます。

import java.util.*;
import javax.management.*;
import javax.management.relation.*;

// ...
MBeanServer mbs = ...;

// Create the Relation Service MBean
ObjectName relSvcName = new ObjectName(":type=RelationService");
RelationService relSvcObject = new RelationService(true);
mbs.registerMBean(relSvcObject, relSvcName);

// Create an MBean proxy for easier access to the Relation Service
RelationServiceMBean relSvc =
    MBeanServerInvocationHandler.newProxyInstance(mbs, relSvcName,
                                                  RelationServiceMBean.class,
                                                  false);

// Define the DependsOn relation type
RoleInfo[] dependsOnRoles = {
    new RoleInfo("dependent", Module.class.getName()),
    new RoleInfo("dependedOn", Module.class.getName())
};
relSvc.createRelationType("DependsOn", dependsOnRoles);

// Now define a relation instance "moduleA DependsOn moduleB"

ObjectName moduleA = new ObjectName(":type=Module,name=A");
ObjectName moduleB = new ObjectName(":type=Module,name=B");

Role dependent = new Role("dependent", Collections.singletonList(moduleA));
Role dependedOn = new Role("dependedOn", Collections.singletonList(moduleB));
Role[] roleArray = {dependent, dependedOn};
RoleList roles = new RoleList(Arrays.asList(roleArray));
relSvc.createRelation("A-DependsOn-B", "DependsOn", roles);

// Query the Relation Service to find what modules moduleA depends on
Map<ObjectName,List<String>> dependentAMap =
    relSvc.findAssociatedMBeans(moduleA, "DependsOn", "dependent");
Set<ObjectName> dependentASet = dependentAMap.keySet();
// Set of ObjectName containing moduleB
導入されたバージョン:
1.5
関連項目:
JMX仕様、バージョン1.4
  • インタフェースのサマリー 
    インタフェース 説明
    Relation
    関係サービスによって管理される関係を表すMBeanクラスは、このインタフェースを実装する必要があります。
    RelationServiceMBean
    関係サービスは、関係タイプと関係を作成および削除し、整合性を処理し、およびクエリー・メカニズムを提供します。
    RelationSupportMBean
    RelationSupportオブジェクトは、ロール数に制限のない任意の関係タイプの単純な関係(ロールのみ、プロパティやメソッドなし)を表現するために、関係サービスによって内部的に使用されます。
    RelationType
    関係タイプを表現するすべてのクラスが、RelationTypeインタフェースを実装する必要があります。
  • クラスのサマリー 
    クラス 説明
    MBeanServerNotificationFilter
    MBeanServerNotificationのフィルタです。
    RelationNotification
    関係サービス内の変更の通知です。
    RelationService
    関係サービスは、関係タイプと関係を作成および削除し、整合性を処理し、およびクエリー・メカニズムを提供します。
    RelationSupport
    RelationSupportオブジェクトは、ロール数に制限のない任意の関係タイプの単純な関係(ロールのみ、プロパティやメソッドなし)を表現するために、関係サービスによって内部的に使用されます。
    RelationTypeSupport
    RelationTypeSupportオブジェクトは、RelationTypeインタフェースを実装します。
    Role
    ロール名、ObjectNameで参照されるMBeanを含めて、ロールを表現します。
    RoleInfo
    RoleInfoオブジェクトは、関係タイプに含まれるロールを集計します。
    RoleList
    RoleListは、ロール(Roleオブジェクト)のリストを表します。
    RoleResult
    関係の複数のロールへの複数のアクセス(読み取りまたは書込みアクセス)の結果を表現します。
    RoleStatus
    このクラスは、ロールのアクセス時に発生する可能性があるさまざまな問題を説明します。
    RoleUnresolved
    未解決のロール(問題の発生により、関係から取得できなかったロール)を表現します。
    RoleUnresolvedList
    RoleUnresolvedListは、RoleUnresolvedオブジェクトのリストを表現します。RoleUnresolvedオブジェクトは、ロールの読み取りまたは書込みアクセスの試行時に問題が発生したため、関係から取得できなかったロールを表します。
  • 例外のサマリー 
    例外 説明
    InvalidRelationIdException
    この例外は、関係に提供された関係IDがすでに使用されている場合に発行されます。
    InvalidRelationServiceException
    この例外は、提供された関係サービスが無効な場合に発行されます。
    InvalidRelationTypeException
    関係タイプが無効です。
    InvalidRoleInfoException
    この例外は、ロール情報において、最小値が最大値よりも大きい場合に発行されます。
    InvalidRoleValueException
    ロール値が無効です。
    RelationException
    このクラスは、関係の管理中に発行される例外のスーパー・クラスです。
    RelationNotFoundException
    この例外は、関係サービス内に、指定された関係IDで表される関係が存在しない場合に発行されます。
    RelationServiceNotRegisteredException
    この例外は、関係サービスへのアクセスが実行されたけれども、その関係サービスが登録されていない場合に発行されます。
    RelationTypeNotFoundException
    この例外は、関係サービス内に、指定された名前の関係タイプが存在しない場合に発行されます。
    RoleInfoNotFoundException
    この例外は、指定された関連型に指定された名前のロール情報が存在しない場合に発行されます。
    RoleNotFoundException
    この例外は、関係内のロールが存在しない場合、読取り不能な場合、または設定不能な場合に発行されます。