JavaTM 2 Platform
Standard Ed. 5.0

パッケージ javax.management

Java Management Extensions のコアクラスを提供します。

参照先:
          説明

インタフェースの概要
Descriptor このインタフェースは、JMX 要素の動作のメタデータセットを表します。
DescriptorAccess このインタフェースは、JMX コンポーネントに関連付けられた Descriptor クラスの記述子 (MBean、MBeanInfo、MBeanAttributeInfo、MBeanNotificationInfo、MBeanOperationInfo、MBeanParameterInfo) にアクセスする目的で使用されます。
DynamicMBean Dynamic MBean (動的管理インタフェースを公開する MBean) に実装するメソッドを定義します。
MBeanRegistration MBean サーバへの登録または MBean サーバからの登録解除の前後にさまざまなオペレーションを実行するため、MBean により実装されます。
MBeanServer エージェント側で MBean を操作するためのインタフェースです。
MBeanServerConnection このインタフェースは、MBean サーバ (ローカルまたはリモート) との通信方法を示します。
MBeanServerDelegateMBean MBeanServerDelegate クラスのオブジェクトの管理インタフェースを定義します。
NotificationBroadcaster Notification を発行する MBean が実装しているインタフェース。
NotificationEmitter Notification を発行する MBean が実装しているインタフェース。
NotificationFilter 通知フィルタとして機能するすべてのクラスによって実装されます。
NotificationListener 通知の受信を希望するオブジェクトによって実装される必要があります。
PersistentMBean このクラスは、MBean によって実装されるインタフェース (持続インタフェース) です。
QueryExp データベースクエリー「where clauses」内で使用可能な関係制約を表します。
ValueExp 関係式の引数として渡すことができる値を表します。
 

クラスの概要
Attribute 名前と値を関連付けることにより、MBean 属性を表現します。
AttributeChangeNotification MBean によって送信される属性変更通知を定義します。
AttributeChangeNotificationFilter このクラスは、属性変更通知NotificationFilter インタフェースを実装します。
AttributeList MBean の属性の値のリストを表します。
AttributeValueExp 関係制約の引数として使用される属性を表します。
DefaultLoaderRepository 推奨されていません。 代わりに MBeanServer.getClassLoaderRepository() を使用してください。
MBeanAttributeInfo 管理用として公開される MBean 属性を記述します。
MBeanConstructorInfo MBean によって公開されるコンストラクタを記述します。
MBeanFeatureInfo MBean 記述オブジェクトに一般情報を提供します。
MBeanInfo MBean によって公開された管理インタフェース (管理オペレーションに使用できる属性と操作のセット) を記述します。
MBeanNotificationInfo MBeanNotificationInfo クラスは、MBean によって発行された、指定の通知 Java クラスに対する複数の異なった通知インスタンスの特性を記述します。
MBeanOperationInfo MBean によって公開される管理オペレーションを記述します。
MBeanParameterInfo MBean によって公開されるオペレーションの引数を記述します。
MBeanPermission MBeanServer オペレーションのアクセスを制御するアクセス権です。
MBeanServerBuilder このクラスは、デフォルトの MBeanServer 実装を作成するビルダーを表します。
MBeanServerDelegate 管理の視点で MBean サーバを表現します。
MBeanServerFactory MBean サーバ参照を提供します。
MBeanServerInvocationHandler MBean の管理インタフェース内で、MBean サーバから MBean にメソッドを渡す InvocationHandler です。
MBeanServerNotification MBean サーバにより、MBeanServerDelegate MBean から発行される通知を表します。
MBeanServerPermission MBeanServer 関連のアクションを実行するためのアクセス権。
MBeanTrustPermission このアクセス権は、署名者またはコードベースの「trust」を表します。
Notification Notification クラスは、MBean が発行する通知を表します。
NotificationBroadcasterSupport NotificationEmitter インタフェースの実装を提供します。
NotificationFilterSupport NotificationFilter インタフェースの実装を提供します。
ObjectInstance MBean のオブジェクト名とクラス名を表します。
ObjectName MBean のオブジェクト名、または複数の MBean 名に一致するパターンを表します。
Query クエリーオブジェクト制約を構築します。
QueryEval 特定の MBean サーバのコンテキストでクエリーを実行します。
StandardMBean Java インタフェースのリフレクションによって管理インタフェースを決定する MBean です。
StringValueExp 関係制約の引数になる文字列を表します。
 

例外の概要
AttributeNotFoundException 指定された属性が存在しないか、取得できません。
BadAttributeValueExpException クエリーを作成するメソッドに無効な MBean 属性が渡された場合にスローされます。
BadBinaryOpValueExpException クエリーを作成するメソッドに無効な式が渡された場合にスローされます。
BadStringOperationException クエリーを作成するメソッドに無効な文字列オペレーションが渡された場合にスローされます。
InstanceAlreadyExistsException MBean はすでにレポジトリに登録されています。
InstanceNotFoundException 指定された MBean がリポジトリ内に存在しません。
IntrospectionException MBean のイントロスペクションの実行時に発生した例外です。
InvalidApplicationException MBean のサブクエリーの式または MBean の修飾属性の式のクラスが間違っている場合にスローされます。
InvalidAttributeValueException 指定された値は、属性に対する有効な値ではありません。
JMException JMX 実装からスローされる例外です。
JMRuntimeException JMX 実装から返される実行時例外です。
ListenerNotFoundException 指定された MBean リスナーがリポジトリ内に存在しません。
MalformedObjectNameException 文字列の形式が有効な ObjectName に対応していません。
MBeanException エージェント内の MBean メソッドによってスローされるユーザ定義の例外を表します。
MBeanRegistrationException MBeanRegistration インタフェースの preRegister() メソッドと preDeregister() メソッドによってスローされる例外をラップします。
NotCompliantMBeanException MBean サーバに JMX 準拠の MBean でないオブジェクトを登録しようとした場合に発行される例外です。
OperationsException MBean のオペレーションの実行時に、MBean サーバ内でスローされる例外を表します。
ReflectionException java.lang.reflect クラスを使って MBean 上のメソッドを呼び出すとき、MBean サーバ内でスローされる例外を表します。
RuntimeErrorException エージェント内で java.lang.Error が発生した場合、キャッチして、RuntimeErrorException として再スローする必要があります。
RuntimeMBeanException エージェント内の MBean メソッドによってスローされる実行時例外を表します。
RuntimeOperationsException MBean でオペレーションの実行時にエージェント内でスローされる実行時例外を表します。
ServiceNotFoundException 要求されたサービスがサポートされていない場合に発行される例外を表します。
 

パッケージ javax.management の説明

Java Management Extensions のコアクラスを提供します。

Java Management Extensions (JMXTM) API は、管理および監視用の標準 API です。一般に、次の用途で使用されます。

JMX API は、システムやネットワークの管理ソリューションにも使用されます。

リモート管理プログラムは、JMX API のリモートアクセス機能を利用して、実行中のアプリケーションにリモートアクセスできます。

MBean

JMX API の基本概念、「MBean」は、リソースを表す名前付きの管理オブジェクトです。次のような管理インタフェースを持ちます。

たとえば、アプリケーションの構成を表す MBean は、複数の異なった構成項目を表す属性を持つことができます。CacheSize 属性を読み取った場合、その項目の現在の値が返されます。同属性を書き込んだ場合、項目が更新され、実行中のアプリケーションの動作が変化する可能性があ ります。save などのオペレーションを実行して、現在の構成を永続的に格納することができます。ConfigurationChangedNotification などの通知は、構成の変更のたびに送信できます。

JMX API の標準的な使用方法では、MBean は Java オブジェクトとして実装されます。しかし、以下に説明するとおり、通常これらのオブジェクトが直接参照されることはありません。

Standard MBean

MBean 実装を単純化するため、JMX API には「Standard MBean」の概念が導入されています。Standard MBean は、JavaBeansTM のネーミングパターンとよく似たネーミングパターンを使って Java インタフェースから属性とオペレーションを推測できる MBean です。たとえば、次のようなインタフェースがあるとします。

 public interface ConfigurationMBean {  public int getCacheSize();
        public void setCacheSize(int size);
        public long getLastChangedTime();
        public void save();
 } 

getCacheSize メソッドと setCacheSize メソッドは、int 型で呼び出された CacheSize (JavaBeans の規則とは異なり、最初の文字がアルファベットの大文字) の読み取り書き込み属性を定義します。

getLastChangedTime メソッドは、long 型で呼び出された LastChangedTime の属性を定義します。これは、setLastChangedTime メソッドが存在しないため、読み取り専用属性です。

save メソッドは、オペレーションで呼び出された save を定義します。getset、 または is で始まる名前を持たないので、属性ではありません。

Standard MBean の正確なネーミングパターンの詳細については、JMX 仕様を参照し てください。

この管理インタフェースで、MBean である Java オブジェクトを作成する方法は 2 通り存在します。1 つは、Java インタフェースの名前から MBean 接尾辞を除いた名前を持つクラスに属するオブジェクトを作成する方法です。例では、オブジェクトは、ConfigurationMBean と同じ Java パッケージの Configuration クラスに属することになります。もう 1 つの方法では、StandardMBean クラスを使用します。

Dynamic MBean

Dynamic MBean は、管理インタフェースを実行時に定義する MBean です。たとえば、構成 MBean は、XML ファイルの解析により、公開する属性の名前と型を決定できます。

DynamicMBean インタフェースを実装するクラスの Java オブジェクトは Dynamic MBean になります。

Open MBean

Open MBean は Dynamic MBean の 1 つです。属性の型、オペレーションパラメータの型、および戻り値は、いくつかの事前定義済み Java クラスを使って構築されます。Open MBean は、アプリケーション固有の型 (非 Java プログラムを含む) に必ずしもアクセスできるとは限らないリモート管理プログラムを使って、オペレーションを簡便化します。Open MBean は、パッケージ javax.management.openmbean で定義されます。

Model MBean

Model MBean は Dynamic MBean の 1 つです。管理インタフェースと配下の管理リソース間のブリッジとして機能します。管理インタフェースと管理リソースは Java オブジェクトとして指定されます。異なった管理インタフェース、異なった管理リソースで、同じ Model MBean 実装を何回でも再利用できます。Model MBean 実装は、持続性、キャッシュ機能といった共通の機能を提供することができ、パッケージ javax.management.modelmbean で定義されます。

MBean サーバ

MBean を使用するためには、MBean サーバに登録する必要があります。MBean サーバは、MBean のリポジトリです。通常、MBean サーバを利用しなければ、MBean にはアクセスできません。コードは、MBean を直接実装する Java オブジェクトにアクセスする代わりに、MBean の名前を指定して MBean サーバ経由で MBean にアクセスするようになりました。各 MBean は、MBean サーバ内に、ObjectName クラスによって定義された一意の名前を持ちます。

MBean サーバは、MBeanServer インタフェースを実装するオブジェクトです。J2SE 5.0 は、同一の Java 仮想マシン上で実行されている複数の異なった管理コンポーネントで共有可能な「Platform MBean Server」を提供します。Platform MBean Server には、ManagementFactory.getPlatformMBeanServer() メソッドでアクセスします。

アプリケーションコードでも、MBeanServerFactory クラスを使って新しい MBean サーバを作成したり、既存の MBean サーバにアクセスしたりできます。

MBean サーバでの MBean の作成

MBean は 2 通りの方法で作成できます。まず、MBean にする Java オブジェクトを構築し、registerMBean メソッドを使って、この Java オブジェクトを MBean サーバに登録する方法があります。もう 1 つの方法では、いずれかの createMBean メソッドを使って、単一のオペレーションで MBean を作成し、登録します。

registerMBean メソッドは、ローカルでは簡単に使用できますが、リモートでは使用できません。createMBean メソッドは、リモートで使用できます。ただし、クラスのロードの問題が発生する場合があるので注意が必要です。

MBeanRegistration インタフェースを実装している MBean は、MBean サーバへの登録時または MBean サーバからの登録解除時にアクションを実行できます。

MBean サーバ内の MBean へのアクセス

次の例のように、ObjectName nameMBeanServer mbs を指定することにより、属性とオペレーションにアクセスできます。

 int cacheSize = mbs.getAttribute(name, "CacheSize");
 Attribute newCacheSize = new Attribute("CacheSize", new Integer(2000));
 mbs.setAttribute(name, newCacheSize);
 mbs.invoke(name, "save", new Object[0], new Class[0]);
 

MBean の管理インタフェースに対応する Java インタフェースがある場合は、次のように、MBean プロキシを利用できます。

 ConfigurationMBean conf = (ConfigurationMBean) MBeanServerInvocationHandler.newProxyInstance(mbs, name, ConfigurationMBean.class, false);
 int cacheSize = conf.getCacheSize();
 conf.setCacheSize(2000);
 conf.save();
 

MBean プロキシは非常に便利です。2 番目の例では、最初の例と同じ MBeanServer オペレーションを呼び出します。

MBean サーバで、特定のパターンに一致する名前を持つ MBean や、特定の制約を満たす属性を持つ MBean を照会できます。名前のパターンは ObjectName クラスで作成されます。制約は Query クラスで作成されます。その後、queryNames メソッドと queryMBeans メソッドによりクエリーが実行されます。

通知

通知は、Notification クラスまたはサブクラスのインスタンスです。Java クラスに加えて、同じクラスの通知の区別に使用する型文字列を持っています。

通知を発行する MBean は、NotificationBroadcaster または NotificationEmitter インタフェースを実装する必要があります。通常、これらのインタフェースを実装するために、NotificationBroadcasterSupport のサブクラス化か、このクラスのインスタンスの委譲が行われます。

通知は、リスナーによって受信されます。リスナーは、NotificationListener インタフェースを実装するオブジェクトです。MBeanServer.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object) メソッドを使って、MBean にリスナーを追加できます。このメソッドにフィルタを適用して、必要な通知だけを選択することもできます。フィルタは、NotificationFilter インタフェースを実装するオブジェクトです。

MBean は、同じ MBean サーバ上のその他の MBean によって発行される通知のリスナーになることができます。この場合、MBean は、NotificationListener を実装し、MBeanServer.addNotificationListener(ObjectName, ObjectName, NotificationFilter, Object) メソッドを利用して通知を待機します。

MBean へのリモートアクセス

MBean サーバには、コネクタ経由でリモートアクセスできます。コネクタを利用することで、リモート Java アプリケーションから、ローカルのサーバにアクセスするときと同様にして MBean サーバにアクセスできます。コネクタは、javax.management.remote パッケージに定義されています。

JMX 仕様には、アダプタの概念も定義されています。アダプタは、SNMP、HTML などの要求のプロトコルを変換し、MBean サーバにアクセスします。たとえば、SNMP GET オペレーションは、MBean サーバ上の getAttribute になります。

パッケージの仕様

導入されたバージョン:
1.5


JavaTM 2 Platform
Standard Ed. 5.0

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

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