Java™ Platform
Standard Edition 7

パッケージ javax.management.relation

関係サービスの定義を提供します。

参照: 説明

パッケージ javax.management.relation の説明

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

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

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

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

どのロールも typed です。このため、ロール内に表示される 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
関連項目:
Java プラットフォームの JMX テクノロジに関するドキュメント、特に『JMX 仕様、バージョン 1.4
Java™ Platform
Standard Edition 7

バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.