パッケージjavax.management.relation
関係サービスの定義を提供します。 関係サービスは、MBeanサーバー内のMBean間の関係を記録するために使用されます。 関係サービスそれ自体がMBeanです。 1台のMBeanサーバーに、RelationService
MBeanの複数のインスタンスを登録できます。
関係タイプは、MBean間の関係を定義します。 その関係においてMBeanが担当するロールを含みます。 通常、1つの関係タイプに2つ以上のロールが含まれます。
関係は、関係タイプの名前付きのインスタンスです。関係では、ロール内の特定のMBeanはObjectName
によって表されます。
たとえば、アプリケーション内のモジュールを表すModule
MBeanがあるとします。 DependsOn
関係タイプは一部のモジュールが他のモジュールに依存しているという関係を表現でき、モジュールの開始または停止順を決めるために使用できます。 DependsOn
関係タイプは、dependent
とdependedOn
の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
- 関連項目:
-
クラス説明この例外は、関係に提供された関係IDがすでに使用されている場合に発行されます。この例外は、提供された関係サービスが無効な場合に発行されます。関係タイプが無効です。この例外は、ロール情報において、最小値が最大値よりも大きい場合に発行されます。ロール値が無効です。
MBeanServerNotification
のフィルタです。関係サービスによって管理される関係を表すMBeanクラスは、このインタフェースを実装する必要があります。このクラスは、関係の管理中に発行される例外のスーパー・クラスです。この例外は、関係サービス内に、指定された関係IDで表される関係が存在しない場合に発行されます。関係サービス内の変更の通知です。関係サービスは、関係タイプと関係を作成および削除し、整合性を処理し、およびクエリー・メカニズムを提供します。関係サービスは、関係タイプと関係を作成および削除し、整合性を処理し、およびクエリー・メカニズムを提供します。この例外は、関係サービスへのアクセスが実行されたけれども、その関係サービスが登録されていない場合に発行されます。RelationSupportオブジェクトは、ロール数に制限のない任意の関係タイプの単純な関係(ロールのみ、プロパティやメソッドなし)を表現するために、関係サービスによって内部的に使用されます。RelationSupportオブジェクトは、ロール数に制限のない任意の関係タイプの単純な関係(ロールのみ、プロパティやメソッドなし)を表現するために、関係サービスによって内部的に使用されます。関係タイプを表現するすべてのクラスが、RelationTypeインタフェースを実装する必要があります。この例外は、関係サービス内に、指定された名前の関係タイプが存在しない場合に発行されます。RelationTypeSupportオブジェクトは、RelationTypeインタフェースを実装します。ロール名、ObjectNameで参照されるMBeanを含めて、ロールを表現します。RoleInfoオブジェクトは、関係タイプに含まれるロールを集計します。この例外は、指定された関連型に指定された名前のロール情報が存在しない場合に発行されます。RoleListは、ロール(Roleオブジェクト)のリストを表します。この例外は、関係内のロールが存在しない場合、読取り不能な場合、または設定不能な場合に発行されます。関係の複数のロールへの複数のアクセス(読み取りまたは書込みアクセス)の結果を表現します。このクラスは、ロールのアクセス時に発生する可能性があるさまざまな問題を説明します。未解決のロール(問題の発生により、関係から取得できなかったロール)を表現します。RoleUnresolvedListは、RoleUnresolvedオブジェクトのリストを表現します。RoleUnresolvedオブジェクトは、ロールの読み取りまたは書込みアクセスの試行時に問題が発生したため、関係から取得できなかったロールを表します。