インタフェース | 説明 |
---|---|
Descriptor |
JMX要素の追加メタデータです。
|
DescriptorAccess |
このインタフェースは、JMXコンポーネントに関連付けられたDescriptorクラスの記述子にアクセスするために使用されます。
|
DescriptorRead |
MBeanInfoなどの管理インタフェース要素のDescriptorを読み取るためのインタフェースです。
|
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句」に似た関係制約を表します。
|
ValueExp |
関係式の引数として渡すことができる値を表します。
|
クラス | 説明 |
---|---|
Attribute |
名前と値を関連付けることにより、MBean属性を表現します。
|
AttributeChangeNotification |
MBeanによって送信される属性変更通知を定義します。
|
AttributeChangeNotificationFilter |
このクラスは、
attribute change notification のNotificationFilter インタフェースを実装します。 |
AttributeList |
MBeanの属性の値のリストを表します。
|
AttributeValueExp |
関係制約の引数として使用される属性を表します。
|
DefaultLoaderRepository | 非推奨
かわりに
MBeanServer.getClassLoaderRepository() を使用します。 |
ImmutableDescriptor |
不変記述子。
|
JMX |
JMX APIからのstaticメソッドです。
|
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サーバーのコンテキストでクエリーを実行します。
|
StandardEmitterMBean |
Javaインタフェースのリフレクションによって管理インタフェースを決定し、通知を発行する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 |
要求されたサービスがサポートされていない場合に発行される例外を表します。
|
注釈型 | 説明 |
---|---|
DescriptorKey |
注釈要素と
Descriptor 内のフィールドとの関係を記述するメタ注釈。 |
MXBean |
インタフェースに対して、MXBeanインタフェースである、またはMXBeanインタフェースではないというマークを明示的に付けるための注釈です。
|
Java Management Extensionsのコア・クラスを提供します。
Java Management Extension (JMXTM) APIは、管理と監視のための標準APIです。一般に、次の用途で使用されます。
JMX APIは、システムやネットワークの管理ソリューションにも使用されます。
リモート管理プログラムは、APIのリモート・アクセス機能を利用して、実行中のアプリケーションにリモート・アクセスできます。
JMX APIの基本概念はMBeanです。MBeanは、リソースを表す名前付きの管理オブジェクトです。publicである必要があり、次のように構成された管理インタフェースを持ちます。
たとえば、アプリケーションの構成を表すMBeanは、複数の異なった構成項目を表す属性を持つことができます。CacheSize
属性を読み取った場合、その項目の現在の値が返されます。同属性を書き込んだ場合、項目が更新され、実行中のアプリケーションの動作が変化する可能性があります。save
などのオペレーションでは、現在の構成を永続的に保存できます。ConfigurationChangedNotification
などの通知は、構成の変更のたびに送信できます。
JMX APIの標準的な使用方法では、MBeanはJavaオブジェクトとして実装されます。しかし、次に説明するとおり、通常これらのオブジェクトが直接参照されることはありません。
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
メソッドは、CacheSize
(JavaBeansの規則とは異なり、最初の文字がアルファベットの大文字)という名前のint
型の読取り書き込み属性を定義します。
getLastChangedTime
メソッドは、LastChangedTime
という名前のlong
型の属性を定義します。これは、setLastChangedTime
メソッドが存在しないため、読取り専用属性です。
save
メソッドは、save
という名前のオペレーションを定義します。get
、set
、またはis
で始まる名前を持たないので、属性ではありません。
Standard MBeanの正確なネーミング・パターンの詳細については、JMX仕様を参照してください。
この管理インタフェースで、MBeanであるJavaオブジェクトを作成する方法は2とおり存在します。1つは、Javaインタフェースの名前からMBean
接尾辞を除いた名前を持つクラスに属するオブジェクトを作成する方法です。例では、オブジェクトは、ConfigurationMBean
と同じJavaパッケージのConfiguration
クラスに属することになります。もう1つの方法では、StandardMBean
クラスを使用します。
MXBeanはStandard MBeanのバリアントで、複雑な型がjavax.management.openmbean
パッケージで定義された標準セットの型にマッピングされます。そうしないとMBeanインタフェースでアプリケーション固有のクラスを参照する必要がある場合に、MXBeanが適しています。詳細は、MXBean
の仕様を参照してください。
Dynamic MBeanは、管理インタフェースを実行時に定義するMBeanです。たとえば、構成MBeanは、XMLファイルの解析により、公開する属性の名前と型を決定できます。
DynamicMBean
インタフェースを実装するクラスのJavaオブジェクトはDynamic MBeanになります。
Open MBeanはDynamic MBeanの一種であり、その属性およびオペレーション・パラメータの型と戻り値は、いくつかの事前定義済みのJavaクラスを使って構築されます。Open MBeanは、アプリケーション固有の型(非Javaプログラムを含む)に必ずしもアクセスできるとはかぎらないリモート管理プログラムを使って、オペレーションを簡便化します。Open MBeanは、パッケージ javax.management.openmbean
で定義されます。
Model MBeanは、管理インタフェースと配下の管理対象リソースのブリッジとして機能するDynamic MBeanの一種です。管理インタフェースと管理対象リソースは、どちらもJavaオブジェクトとして指定されます。複数の異なった管理インタフェースおよび管理対象リソースで、同じModel MBean実装を繰返し利用できます。また、Model MBean実装は、永続性機能、キャッシング機能などの共通機能を提供できます。Model MBeanは、パッケージ javax.management.modelmbean
で定義されます。
MBeanを使用するためには、MBeanサーバーに登録する必要があります。MBeanサーバーは、MBeanのリポジトリです。通常、MBeanサーバーを利用しなければ、MBeanにはアクセスできません。コードは、MBeanを直接実装するJavaオブジェクトにアクセスする代わりに、MBeanの名前を指定してMBeanサーバー経由でMBeanにアクセスするようになりました。各MBeanは、MBeanサーバー内に、ObjectName
クラスによって定義された一意の名前を持ちます。
MBeanサーバーは、MBeanServer
インタフェースを実装するオブジェクトです。もっとも便利なMBeanサーバーは、プラットフォームMBeanサーバーです。これは、単一のJava仮想マシン内で動作する異なる管理コンポーネントで共有可能な単独のMBeanサーバーです。プラットフォームMBeanサーバーには、ManagementFactory.getPlatformMBeanServer()
メソッドでアクセスします。
アプリケーション・コードでも、MBeanServerFactory
クラスを使って新しいMBeanサーバーを作成したり、既存のMBeanサーバーにアクセスしたりできます。
MBeanは2とおりの方法で作成できます。1つ目の方法は、MBeanであるJavaオブジェクトを作成し、registerMBean
メソッドでそのオブジェクトをMBeanサーバーに登録します。もう1つの方法では、createMBean
メソッドの1つを使用して単一オペレーションでMBeanの作成および登録を行います。
registerMBean
メソッドは、ローカルでの使用を目的とした単純な構造となっていますが、リモートで使用することはできません。createMBean
メソッドは、リモートで使用できますが、場合によってクラスのロードに注意を払う必要があります。
MBeanサーバーでMBeanRegistration
インタフェースを導入している状態でMBeanをそのMBeanサーバーに登録またはそのサーバーから登録解除する場合、そのMBeanでアクションを実行できます。
次の例のように、ObjectName
name
とMBeanServer
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 =
JMX.newMBeanProxy
(mbs, name, ConfigurationMBean.class);
int cacheSize = conf.getCacheSize();
conf.setCacheSize(2000);
conf.save();
MBeanプロキシは非常に便利です。2番目の例では、最初の例と同じMBeanServer
オペレーションを呼び出します。
MBeanサーバーで、特定のパターンに一致する名前を持つMBeanや、特定の制約を満たす属性を持つMBeanを照会できます。名前パターンの構築にはObjectName
クラスを使用し、制約の構築にはQuery
クラスを使用します。その後、queryNames
メソッドとqueryMBeans
メソッドによりクエリーが実行されます。
MBeanは、MBeanサーバーに登録および登録解除された場合に指示されるように、MBeanRegistration
インタフェースを実装できます。また、preRegister
メソッドにより、MBeanはMBeanServer
オブジェクトへの参照と、MBeanサーバー内のObjectName
を取得できます。
通知は、Notification
クラスまたはサブクラスのインスタンスです。Javaクラスに加えて、同じクラスの通知の区別に使用する型文字列を持っています。
通知を発行するMBeanは、NotificationBroadcaster
またはNotificationEmitter
インタフェースを実装する必要があります。通常、これらのインタフェースを実装するために、NotificationBroadcasterSupport
のサブクラス化か、このクラスのインスタンスの委譲が行われます。次はその例です。
public class Configuration extends NotificationBroadcasterSupport
implements ConfigurationMBean {
...
private void updated() {
Notification n = new Notification(...);
sendNotification
(n);
}
}
通知は、リスナーを使って受信できます。リスナーは、NotificationListener
インタフェースを実装するオブジェクトです。MBeanServer.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)
メソッドを使って、MBeanにリスナーを追加できます。オプションで、このメソッドにフィルタを適用して、必要な通知のみを選択することもできます。フィルタは、NotificationFilter
インタフェースを実装するオブジェクトです。
MBeanは、同じMBeanサーバー上のその他のMBeanによって発行される通知のリスナーになることができます。この場合、MBeanは、NotificationListener
を実装し、MBeanServer.addNotificationListener(ObjectName, ObjectName, NotificationFilter, Object)
メソッドを利用して通知を待機します。
MBeanサーバーには、コネクタ経由でリモート・アクセスできます。コネクタを使用すると、リモートのJavaアプリケーションが、ローカルのJavaアプリケーションと実質的に同じ方法でMBeanサーバーにアクセスできます。パッケージ javax.management.remote
はコネクタを定義します。
JMX仕様には、アダプタの概念も定義されています。アダプタは、SNMPやHTMLなどのプロトコル内で要求を変換して、MBeanサーバーにアクセスします。たとえば、SNMP GETオペレーションによりMBeanサーバー上でgetAttribute
が実行されます。
クライアントがJMX Remote APIを使用してサーバーに接続した場合、JMX仕様のバージョンが同じではないことがあります。ここで説明しているJMX仕様のバージョンはバージョン1.4です。以前のバージョンは1.0、1.1、および1.2でした。(1.3はありませんでした。)標準JMX Remote APIはバージョン1.2以降で動作するように定義されているため、標準ベースの配備で発生する相互運用性の問題は、バージョン1.2以降のみに関係があります。
JMX仕様のすべてのバージョンは、以前のバージョンの機能を引き続き実装しています。このため、クライアントがサーバーより前のバージョンを実行していても、相互運用性の問題は発生しないはずです。
クライアントがサーバーよりあとのバージョンを実行している場合は、次のセクションで説明しているとおり、特定の新機能が使用できない可能性があります。クライアントは、MBeanServerDelegate
のSpecificationVersion
属性を調査してサーバーのバージョンを判別できます。
ObjectName
のキーのプロパティに、domain:type=Foo,name=*
など、ワイルドカードを使用することはできません。ただし、*:*
や*:type=Foo,*
など、プロパティ全体に一致するワイルドカードは許可されます。
クエリー内でQuery.isInstanceOf
は使用できません。
javax.management.monitor
パッケージのドキュメントに記述されているとおり、モニターの監視対象の属性でHeapMemoryUsage.used
などのドット構文を使用することはできません。
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.