JavaTM Platform
Standard Ed. 6

パッケージ javax.management.relation

関係サービスについて定義します。

参照先:
          説明

インタフェースの概要
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 オブジェクトのリストを表現します。
 

例外の概要
InvalidRelationIdException この例外は、関係に対して、すでに使用されている関係 ID が提供された場合に発行されます。
InvalidRelationServiceException この例外は、提供された関係サービスが無効な場合に発行されます。
InvalidRelationTypeException 関係型が無効です。
InvalidRoleInfoException この例外は、ロール情報において、最小値が最大値よりも大きい場合に発行されます。
InvalidRoleValueException ロール値が無効です。
RelationException このクラスは、関係の管理中に発行される例外のスーパークラスです。
RelationNotFoundException この例外は、関係サービス内に、指定された関係 ID で表される関係が存在しない場合に発行されます。
RelationServiceNotRegisteredException この例外は、関係サービスへのアクセスが登録されていない場合に発行されます。
RelationTypeNotFoundException この例外は、関係サービス内に、指定された名前の関係型が存在しない場合に発行されます。
RoleInfoNotFoundException この例外は、指定された関連型に指定された名前のロール情報が存在しない場合に発行されます。
RoleNotFoundException この例外は、関係に含まれるロールが存在しない場合、存在したとしても読み取り不能な場合、または設定不能な場合に発行されます。
 

パッケージ 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 モジュールをリンクします。

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

関係インスタンスは、javax.management.relation.RelationRelation インタフェースを実装するオブジェクト (通常 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 SE 6 プラットフォームの JMX テクノロジに関するマニュアル、 特に 『JMX 仕様、バージョン 1.4』(pdf)

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。