この記事は検証可能参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)出典検索?"Java Management Extensions" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2021年6月)

Java Management ExtensionsJMX)は、アプリケーションソフトウェア/システムオブジェクト/デバイス(プリンターなど)/サービス指向ネットワークなどの監視・管理のためのツールを提供するJavaプラットフォーム技術の一種。これらのリソースはManaged Bean (MBean) と呼ばれるオブジェクトで表現される。このAPIの面白い特徴として、クラス群を動的にロードしてインスタンス化できる。

JMX 1.0、1.1、1.2はJava Community ProcessJSR 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

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である。

  1. 非staticな内部クラス(inner class)ではないこと
  2. 具象クラスであるか、または@Decoratorアノーテーションされていること
  3. EJBコンポーネント定義アノーテーションでアノーテーションされていないか、またはejb-jar.xml内でEJB beanクラスとして宣言されていること

アノーテーションのような特殊な宣言は、Managed Beanを定義するために必須なものではない。

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

アーキテクチャ

JMXは以下の3階層アーキテクチャに基づいている:

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

サポート

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

脚注

  1. ^ https://www.jcp.org/en/jsr/detail?id=255

関連項目

参考文献

この節には参考文献外部リンクの一覧が含まれていますが、脚注による参照が不十分であるため、情報源が依然不明確です。適切な位置に脚注を追加して、記事の信頼性向上にご協力ください。(2021年6月)

外部リンク