Java Management Extensions

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年で中止されたhttps://www.jcp.org/en/jsr/detail?id=255。遠隔管理・監視のための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 
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である。
 非staticな内部クラス(inner class)ではないこと
 具象クラスであるか、または@Decoratorアノーテーションされていること
 EJBコンポーネント定義アノーテーションでアノーテーションされていないか、またはejb-jar.xml内でEJB beanクラスとして宣言されていること
アノーテーションのような特殊な宣言は、Managed Beanを定義するために必須なものではない。

MBeanはその内部的な（属性の）変化をjavax.management.NotificationEmitterを実装することによりMBeanServerに通知できる。MBeanの変化に関心のあるアプリケーションは、リスナー (javax.management.NotificationListener) をMBeanServerに登録する。 JMXはリスナー群が全ての通知を受け取れることは保証しないことに留意されたい。

 アーキテクチャ 
JMXは以下の3階層アーキテクチャに基づいている:
 Probe レベル（Instrumentationレベルとも呼ぶ） : プローブ (MBean) によりリソースの状態を監視・測定する。
 Agent レベル （MBeanServerとも呼ぶ）: JMXの中核である。MBeanとアプリケーションの仲介を行う。
 Remote Management レベル : 遠隔のアプリケーションが Connector や Adaptor を通して MBeanServerにアクセスできるようにする。Connector は各種通信フレームワーク（Java RMI、IIOP、JMS、WS-*など）を使ってMBeanServer APIへの完全なリモートアクセスを提供する。AdaptorはそのAPIを他のプロトコル（SNMPなど）に接続したり、WebベースのGUI（HTML/HTTP、WML/HTTPなど）に接続したりする。

アプリケーションとしては、汎用のコンソール（JConsole や MC4J など）でもよいし、ドメイン固有の（監視）アプリケーションでもよい。

 サポート 
JMX のサポート状況はベンダーによって様々である:

 Java アプリケーションサーバ（JBoss、JOnAS、WebSphere Application Server、BEA WebLogic Server、Sun Java System Application Serverなど）はJMXをサポートしている。
 システム管理ツールとしてJMXをサポートしているものにはHP OpenViewなどがある。
 MX4JはオープンソースのJMX実装である。
 JManageはオープンソースのJMXコンソールであり、Webインタフェースとコマンド行インタフェースがある。
 MC4JはオープンソースのJMXコンソールである。

脚注

 関連項目 
 Java Beans
 Jini
 OSGi
 Simple Network Management Protocol
 ネットワーク管理
 メタクラス
 メタプログラミング
 リフレクション

 参考文献 

 J. Steven Perry: Java Management Extensions, O'Reilly, ISBN 0-596-00245-9
 Marc Fleury, Juha Lindfors: JMX: Managing J2EE with Java Management Extensions, Sams Publishing, ISBN 0-672-32288-9
 Jeff Hanson: Connecting JMX Clients and Servers: Understanding the Java Management Extensions, APress L. P., ISBN 1-59059-101-1
 Benjamin G Sullins, Mark B Whipple : JMX in Action: You will also get your first JMX application up and running, Manning Publications Co. 2002, ISBN 1-930110-56-1

 外部リンク 
 JMX on java.sun.com
 JMX at JBoss.com
 JSR 255 (JMX 2.0)
 JSR 3 (JMX 1.0, 1.1, and 1.2)
 JMX/JBoss - マイクロカーネル設計
 JMXを使用する監視と管理
 J2SE 5.0 虎の穴 JMX 基礎編

Category:Java enterprise platform
Management Extensions
Category:ネットワーク管理