Java Management Extensions (JMX) は、Java リソース (例えば、アプリケーション・サーバー) をシステム管理インフラストラクチャーに公開する標準的な方法を提供するフレームワークです。
JMX フレームワークを使用すると、プロバイダーは、構成設定のリスト作成などの機能をインプリメントすることができ、
ユーザーはその設定を編集することができます。
また、このフレームワークは、管理アプリケーションが使用できる通知レイヤーを含み、
アプリケーション・サーバーの開始などのイベントをモニターします。
JMX の主要なフィーチャー
JMX の WebSphere Application Server バージョン 6 インプリメンテーションの主要なフィーチャーには、
以下のものが含まれます。
- JMX エージェントを実行するすべてのプロセス。
- JMX 運用を介して実行されるすべてのランタイム管理。
- JMX エージェントをリモート JMX 対応管理アプリケーションに接続するのに使用されるコネクター。
次のコネクターがサポートされています。
- SOAP JMX コネクター
- Remote Method Invocation over the Internet Inter-ORB Protocol (RMI-IIOP) JMX コネクター
- 特定のプロトコルを介して JMX エージェントの管理ビューを提供するプロトコル・アダプター。
プロトコル・アダプターに接続する管理アプリケーションは通常、特定のプロトコルに固有です。
- ランタイム・オブジェクトの構成設定を照会し、更新する機能。
- ランタイム中にアプリケーション・コンポーネントおよびリソースをロード、初期化、変更、およびモニターする機能。
JMX アーキテクチャー
JMX アーキテクチャーは以下の 3 つのレイヤーに構造化されています。
- 計測レイヤー - リソースを管理対象 Bean (MBean) という名の特別な Java Bean 内にラップする方法を指示します。
- エージェント・レイヤー - MBean サーバーおよびエージェントから構成され、管理インフラストラクチャーを提供します。
インプリメントされるサービスには、以下のものがあります。
- 管理レイヤー - 外部管理アプリケーションが、プロトコル、API などにおいて、下のレイヤーと対話する方法を定義します。
このレイヤーは分散サービス仕様 (JSR-077) のインプリメンテーションを使用します。
これはまだ Java 2 Platform, Enterprise Edition (J2EE) 仕様の一部ではありません。
JMX の階層化アーキテクチャーを次の図で要約しています。

図 1: JMX アーキテクチャー
JMX 分散管理
次の図は、JMX アーキテクチャーがどのように Network Deployment 環境の分散管理トポロジー全体に適合するかを示します。

図 2: JMX の WebSphere Application Server 分散管理
この分散管理アーキテクチャーの主なポイントには、次のものが含まれます。
- ローカル MBean サーバーを備えた Java 仮想マシン (JVM) レジスターに対してローカルである内部 MBean。
- 外部 MBean には MBean サーバーに対するローカル・プロキシーがあります。プロキシーはローカル MBean サーバーに登録します。
ローカル MBean サーバーは、MBean プロキシーを使用して、
メッセージを以下の場所にある外部 MBean サーバーに受け渡すことができます。
- ノード内にすべてのサーバーの MBean プロキシーがあるノード・エージェント。
他のノードの MBean プロキシーは使用されません。
- デプロイメント・マネージャーには、セルのすべてのノード・エージェントの MBean プロキシーがあります。
JMX Mbean
WebSphere Application Server は多くの MBean を提供し、
それぞれが異なる機能および操作を使用できます。
例えば、アプリケーション・サーバー MBean は、始動および停止などの操作を公開することができます。
アプリケーション MBean はインストールおよびアンインストールなどの操作を公開することができます。
ユーザーが経験することになる JMX 使用シナリオには、次のようなものがあります。
- プログラマチックに JMX API にアクセスすることによって、Network Deployment ランタイムおよび
その WebSphere リソースを制御するために書き込まれた外部プログラム。
- デプロイメント・コードの一部としてカスタム JMX MBean を含むサード・パーティー・アプリケーション。
このアプリケーションによって、アプリケーション・コンポーネントおよびリソースの JMX API 管理をサポートします。
次の例は、MBean 取得方法を示しています。
Jacl を使用:
set am [$AdminControl queryNames type=ApplicationManager,process=server1,*]
Jython を使用:
am = AdminControl.queryNames('type=ApplicationManager,process=server1,*')
各 WebSphere Application Server ランタイム MBean は、
属性、操作、および通知を保持できます。
WebSphere Application Server で提供される各 MBean の詳細な資料は、
WebSphere Application Server 製品の各コピーでインストールされた HTML テーブルで使用できます。
製品のメイン・インストール・ディレクトリーの下に、
web ディレクトリーがあります。
web ディレクトリーの下に、
mbeanDocs という名前の別のディレクトリーがあります。
mbeanDocs ディレクトリーには、いくつかの HTML ファイルが、
WebSphere Application Server で提供される Mbean ごとに 1 つずつあります。
また、index.html ファイルもあり、このファイルでは、
個々の MBean ファイルをすべて一緒にナビゲーション・ツリーの最上位に結合しています。
それぞれの MBean は、保持している属性、操作、および通知の要約を提供します。
JMX の利点
WebSphere Application Server の管理機能に JMX を使用することには、以下の利点があります。
- 大きな投資をすることなく、Java アプリケーションの管理ができます。
- 管理エージェントとして機能するコア管理対象オブジェクト・サーバーに依存します。
- Java アプリケーションは管理対象オブジェクト・サーバーを組み込み、その機能の一部をオブジェクト・サーバーに登録された 1 つ以上の MBean として使用可能にすることができます。
- スケーラブルな管理アーキテクチャーを提供します。
- すべての JMX エージェント・サービスが、管理エージェントにプラグインできる独立したモジュールです。
- API は拡張可能であり、新規 WebSphere Application Server およびカスタム・アプリケーション・フィーチャーをこの管理インターフェースで簡単に追加および公開することができます。
- 既存の管理ソリューションを統合します。
- 各プロセスは、リソースの管理に関しては自立しています。
制御の中心点はありません。原則として、JMX 対応管理クライアントは、すべての管理対象プロセスと接続でき、
プロセスによってホストされる MBean と対話することができます。
- JMX では、システム管理に対して、単一の、フラットな、ドメイン全体をカバーするアプローチを提供します。
個々のプロセスは MBean プロキシーを介して対話して、単一の管理クライアントをサポートし、
管理プロセスのネットワークを介してシームレスにナビゲートします。
- 管理に必要なインターフェースのみを定義します。
- 管理ツールにアプリケーションおよび管理リソースを公開するために、標準 API を提供します。