ナビゲーション・リンクをスキップ
Java(tm) Platform
Standard Edition 8

パッケージ javax.management.relation

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

参照: 説明

パッケージ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
関連項目:
JavaプラットフォームのJMXテクノロジに関するドキュメント、特に『JMX仕様、バージョン1.4
ナビゲーション・リンクをスキップ
Java(tm) Platform
Standard Edition 8

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