![]() |
Java Management Extensions(JMX)は、アプリケーションソフトウェア/システムオブジェクト/デバイス(プリンターなど)/サービス指向ネットワークなどの監視・管理のためのツールを提供するJavaプラットフォーム技術の一種。これらのリソースはManaged Bean (MBean) と呼ばれるオブジェクトで表現される。このAPIの面白い特徴として、クラス群を動的にロードしてインスタンス化できる。
JMX 1.0、1.1、1.2はJava Community ProcessのJSR 3で定義された。JMX 2.0はJSR 255として開発されてきたが、2016年で中止された[1]。遠隔管理・監視のためのJMX Remote API 1.0はJSR 160で規定された。WebサービスのためのJMX Remote API拡張は JSR 262で開発中である。
当初、Java EE(現・Jakarta EE)に受け入れられたが、JMXはJava SEのバージョン5.0以降にも組み込まれている。なお「JMX」 はオラクルの商標である。
Managed Bean(しばしば略してMBeanと呼ぶ)はJavaBeansの一種であり、依存性の注入により作られている。MBeanは特にJava Management Extensions技術で用いられている。しかし、Java EE 6仕様ではMBeanにより詳細な意味を与えている。
MBeanはJava Virtual Machine上で走るリソース(アプリケーションやJakarta EE技術サービス(トランザクション・モニタやJDBCドライバなど))との連絡窓口の役割を果たす。MBeanは関心のある統計数値(パフォーマンス、リソース使用量、問題など)を収集すること(プル)、アプリケーションの設定値を取得または設定すること(プッシュ/プル)、および障害や状態変化などのイベントを通知すること(プッシュ)に使える。
Java EE 6仕様では、MBeanはJavaクラスで実装されたBeanであるとしており、Beanクラスと呼ばれる。他の何らかのJakarta EE 技術仕様(たとえばJavaServer Faces技術仕様)でManaged Beanであると定義されたトップレベルJavaクラス、あるいは次の条件をすべて満たすトップレベルJavaクラスであれば、それはManaged Beanである。
アノーテーションのような特殊な宣言は、Managed Beanを定義するために必須なものではない。
MBeanはその内部的な(属性の)変化をjavax.management.NotificationEmitter
を実装することによりMBeanServerに通知できる。MBeanの変化に関心のあるアプリケーションは、リスナー (javax.management.NotificationListener
) をMBeanServerに登録する。 JMXはリスナー群が全ての通知を受け取れることは保証しないことに留意されたい。
JMXは以下の3階層アーキテクチャに基づいている:
アプリケーションとしては、汎用のコンソール(JConsole や MC4J など)でもよいし、ドメイン固有の(監視)アプリケーションでもよい。
JMX のサポート状況はベンダーによって様々である:
![]() |