Java Management Extensions ( JMX ) は、アプリケーション、システムオブジェクト、デバイス (プリンタなど)、サービス指向ネットワークを管理および監視するためのツールを提供するJavaテクノロジです。これらのリソースは、MBean ( Managed Bean )と呼ばれるオブジェクトによって表されます。API では、クラスを動的にロードしてインスタンス化できます。アプリケーションの管理と監視は、Java Dynamic Management Kit を使用して設計および開発できます。[1]
Java Community ProcessのJSR 003 [2]は、JMX 1.0、1.1、1.2を定義しました。JMX 2.0はJSR 255の下で開発されていましたが、このJSRはその後撤回されました。[3]リモート管理と監視のためのJMXリモートAPI 1.0は、JSR 160で指定されています。[4] Webサービス用のJMXリモートAPIの拡張は、JSR 262の下で開発されていました。[5]
JMX はJ2EEコミュニティによって早期に採用され、バージョン 5.0 以降J2SEの一部となっています。「JMX」はOracle Corporationの商標です。
建築

JMX は 3 レベルのアーキテクチャを使用します。
- プローブレベル(インストルメンテーションレベルとも呼ばれる)には、リソースをインストルメントするプローブ(MBeanと呼ばれる)が含まれます。
- エージェントレベル、または MBeanServer – JMX の中核です。MBean とアプリケーション間の仲介役として機能します。
- リモート管理レベルでは、リモート アプリケーションがコネクタとアダプタを介して MBeanServer にアクセスできるようになります。コネクタは、さまざまな通信 ( RMI、IIOP、JMS、WS-*など) を使用して MBeanServer API への完全なリモート アクセスを提供し、アダプタは API を別のプロトコル ( SNMPなど) または Web ベースの GUI ( HTML / HTTP、WML / HTTPなど) に適合させます。
アプリケーションは、汎用コンソール( JConsole [6]やMC4J [7]など)またはドメイン固有の(監視)アプリケーションにすることができます。外部アプリケーションは、JMXコネクタとプロトコルアダプタを使用してMBeanと対話できます。コネクタは、エージェントをリモートのJMX対応管理アプリケーションに接続するために役立ちます。この形式の通信には、JMXエージェントのコネクタと管理アプリケーションのコネクタクライアントが関係します。
Java Platform, Standard Editionには、Java リモート メソッド呼び出しAPIの一部である Java リモート メソッド プロトコルを使用するRMI コネクタという1 つのコネクタが付属しています。これは、ほとんどの管理アプリケーションで使用されるコネクタです。
プロトコル アダプタは、特定のプロトコルを介して JMX エージェントの管理ビューを提供します。プロトコル アダプタに接続する管理アプリケーションは、通常、特定のプロトコルに固有です。
マネージドBean
マネージド Bean (単にMBeanと呼ばれることもあります) は、依存性注入を使用して作成されるJavaBeanの一種です。マネージド Bean は特に Java Management Extensions テクノロジで使用されますが、Java EE 6 の仕様ではマネージド Bean のより詳細な意味が規定されています。
MBean は、アプリケーションや Java EE テクニカル サービス (トランザクション モニター、JDBC ドライバーなど) などのJava 仮想マシンで実行されているリソースを表します。これらは、パフォーマンス、リソースの使用状況、問題などの懸念事項に関する統計情報を収集 (プル)、アプリケーションの構成やプロパティを取得および設定 (プッシュ/プル)、および障害や状態変更などのイベントを通知 (プッシュ) するために使用できます。
Java EE 6 では、管理対象 Bean は Java クラスによって実装される Bean であり、Bean クラスと呼ばれます。トップレベルの Java クラスは、他の Java EE テクノロジ仕様 (JavaServer Facesテクノロジ仕様など) によって管理対象 Bean として定義されている場合、または次の条件をすべて満たしている場合に管理対象 Bean になります。
- 非静的内部クラスではありません。
- これは具体的なクラスであるか、注釈が付けられています
@Decorator。 - EJB コンポーネント定義アノテーションが付けられておらず、 で EJB Bean クラスとして宣言されていません
ejb-jar.xml。
マネージド Bean を定義するために、アノテーションなどの特別な宣言は必要ありません。
MBeanは、を実装することで、MBeanServerに内部の変更(属性の変更)を通知することができますjavax.management.NotificationEmitter。MBeanの変更に関心のあるアプリケーションは、javax.management.NotificationListenerMBeanServerにリスナー()を登録します。JMXは、リスナーがすべての通知を受信することを保証しないことに注意してください。[8]
種類
MBean には 2 つの基本的なタイプがあります。
- 標準 MBean は、属性と操作 (つまりメソッド) のセッターとゲッターを含むビジネス インターフェースを実装します。
- 動的 MBean は、
javax.management.DynamicMBean属性と操作を一覧表示し、属性値を取得および設定する方法を提供するインターフェースを実装します。
追加のタイプは、Open MBeans、Model MBeans、およびMonitor MBeansです。Open MBeansは、基本データ型に依存する動的MBeansです。これらは説明が不要で、よりユーザーフレンドリーです。Model MBeansは、実行時に構成できる動的MBeansです。プログラム実行時にリソースを動的に構成するための汎用MBeanクラスも提供されています。
MXBean (プラットフォーム MBean ) は、ガベージ コレクション、JIT コンパイル、メモリ プール、マルチスレッドなど のJava 仮想マシンサブシステムを具体化する 特別なタイプの MBean です。
MLet(管理アプレット)は、 XML記述からMBeanをロード、インスタンス化、MBeanServerに登録するためのユーティリティMBeanです。XML記述子の形式は次のとおりです。[9]
<MLET コード = ''クラス'' | オブジェクト = ''serfile'' ARCHIVE = ''アーカイブリスト'' [CODEBASE = ''コードベースURL''] [NAME = ''オブジェクト名''] [VERSION = ''バージョン''] > [引数リスト] </MLET>
サポート
JMX は、さまざまなベンダーによってさまざまなレベルでサポートされています。
- JMXは、OpenCloud Rhino Application Server [1]、 JBoss、JOnAS、WebSphere Application Server、WebLogic、SAP NetWeaver Application Server、Oracle Application Server 10g、Sun Java System Application ServerなどのJavaアプリケーションサーバーでサポートされています。
- JMXはUnboundIDディレクトリサーバー、ディレクトリプロキシサーバー、同期サーバーによってサポートされています。[10]
- このプロトコルをサポートするシステム管理ツールには、Empirix OneSight、GroundWork Monitor、Hyperic、HP OpenView、IBM Director、ITRS Geneos、Nimsoft NMS、OpenNMS、[11] Zabbix、Zenoss Core、Zyrion、SolarWinds、Uptime Infrastructure Monitor、LogicMonitorなどがあります。[12]
- JMXはApache Tomcatなどのサーブレットコンテナでもサポートされています。[13] & Jetty(ウェブサーバー)
- MX4J [2]はエンタープライズコンピューティング向けのオープンソースJMXです。
- jManage [3] Archived 2020-08-03 at the Wayback Machineは、Webおよびコマンドラインインターフェースを備えたオープンソースのエンタープライズグレードのJMXコンソールです。
- MC4J [4]は、JMXをサポートするサーバーに接続するためのオープンソースのビジュアルコンソールです。
- snmpAdaptor4j [5]はSNMPプロトコルを介してMBeanへの簡単なアクセスを提供するオープンソースです。
- jvmtopはコマンドライン用の軽量オープンソースJMX監視ツールです。
- PrometheusはJMXエクスポーター[14]を介してJMXデータを取り込むことができ、メトリクスをPrometheus形式で公開します。
- Jolokia は、HTTP 経由で JMX を公開する j2ee アプリケーションです。
参照
参考文献
- ^ 「Java Dynamic Management Kit の概要」。docs.oracle.com。2021年1 月 12 日閲覧。
- ^ JSR 003: JavaTM 管理拡張機能 (JMXTM) 仕様
- ^ JSR 255: JavaTM Management Extensions (JMXTM) 仕様、バージョン 2.0
- ^ JSR 160: JavaTM Management Extensions (JMX) リモート API
- ^ JSR 262: Java Management Extensions (JMX) エージェント用の Web サービス コネクタ
- ^ JConsole を使用してアプリケーションを監視する
- ^ 「MC4J プロジェクトは、J2EE アプリケーション サーバーおよびその他の Java アプリケーション用の管理ソフトウェアを作成します」。2007 年 3 月 23 日時点のオリジナルよりアーカイブ。2006年 8 月 27 日閲覧。
- ^ Java Management Extensions (JMX) – ベストプラクティス
- ^ "MLet (Java 2 プラットフォーム SE 5.0)".サン・マイクロシステムズ。2008 年 6 月 22 日に取得。
- ^ UnboundID Corp. 2012-03-06 に Wayback Machineでアーカイブ
- ^ 「ホーム」。
- ^ 「JMX データ収集」www.logicmonitor.com . 2020 年 11 月 20 日閲覧。
- ^ Apache Tomcat 6.0: Tomcat の監視と管理 (Tomcat マニュアル)
- ^ 「JMX エクスポーター」。GitHub。2022年 2 月 14 日。
さらに読む
記事
- 「JMX によるコンポーネント アーキテクチャの実現」Marc Fleury および Juha Lindfors 著
- 「新しいベンダー中立の J2EE 管理 API の紹介」Andreas Schaefer 著
- 「経営分野における Java」マックス・ゴフ著、1999 年
- 10月20日
- 11月20日
- 12月29日
- JMX/JBoss –マイクロカーネル設計
- 「jManage 1.0 で JMX 対応アプリケーションを管理する」 Rakesh Kalra 著 2006 年 1 月 16 日
- 「JMX と JUnit による J2EE システムの管理」2008-05-26 にWayback Machineでアーカイブされました(Lucas McGregor 著)
- Sun Java 監視と管理の概要
- Java EE 6 チュートリアル: マネージド Bean について
書籍
- Benjamin G Sullins、Mark B Whipple : JMX in Action: 最初の JMX アプリケーションを起動して実行することもできます。Manning Publications Co. 2002、ISBN 1-930110-56-1
- J. Steven Perry: Java Management Extensions、O'Reilly、ISBN 0-596-00245-9
- Jeff Hanson : JMX クライアントとサーバーの接続: Java 管理拡張機能の理解、APress LP、ISBN 1-59059-101-1
- Marc Fleury、Juha Lindfors: JMX: Java Management Extensions による J2EE の管理、Sams Publishing、ISBN 0-672-32288-9
外部リンク
- JMX 1.4 (JMX 1.4、Java 6 の一部)
- JBoss.com の JMX
- www.oracle.com の JMX
- JSR 255 (JMX 2.0)
- JSR 3 (JMX 1.0、1.1、および 1.2)
