ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server JMX による管理の容易なアプリケーションの開発
11g リリース 1 (10.3.1)
B55538-01
  ドキュメントのライブラリ

目次
目次

戻る
戻る
 
次へ
次へ
 

2 JMX について

Java Management Extensions (JMX) は、Java アプリケーションをモニタおよび管理するための仕様です。JMX を使用すると、汎用管理システムでアプリケーションをモニタし、注意が必要なときに通知を生成し、アプリケーションの状態を変更して問題を解決できます。JMX は SNMP および他の管理規格と同様に公開された仕様であり、一般的に用いられるモニタ用製品を扱うベンダの多くでサポートされています。

WebLogic Server は、JDK 6 に含まれている Java Management Extensions (JMX) 1.2 実装を使用します。以下の節では、Java アプリケーションで JMX を使用して実行時メトリックと制御ポイントを管理システムに通知する方法について説明します。

WebLogic Server で Java EE アプリケーションを管理するために使用できるその他の API およびユーティリティについては、『Oracle Fusion Middleware Oracle WebLogic Server の紹介』の「WebLogic Server システム管理の概要」を参照してください。

JMX で開発できる管理サービス

アプリケーションのモニタと管理に使用する場合、JMX は通常、管理アプリケーションが管理データを収集する Java クラスのプロパティにアクセスできるようにします (図 2-1を参照)。 多くの場合、これらのクラス プロパティは、アプリケーションが消費するリソースを追跡する単純なカウンタです。また、JMX は、アプリケーションのプロセスの開始または停止、またはクラス プロパティ値のリセットを行う Java クラスのメソッドへのアクセスも提供します。JMX を介して管理データをエクスポーズするクラスを、管理対象 Bean (MBean) と言います。また、MBean を介してエクスポーズされるクラス プロパティを属性、メソッドをオペレーションと言います。

図 2-1 JMX が提供する管理プロパティへのアクセス

図 2-1 の説明は図の下のリンクをクリックしてください。
「図 2-1 JMX が提供する管理プロパティへのアクセス」の説明

JMX 対応管理ユーティリティへのこのようなアクセスを実現したら、システム管理者または運用スタッフは管理データをシステムの全体図に統合できます。JMX 管理ユーティリティを使用することで、MBean 属性の現在の値を参照したり、JMX モニタを設定して MBean 属性値を定期的にポーリングしたり、属性値が特定のしきい値を超えた場合にのみ管理ユーティリティに通知が送信されるようにしたりできます。

管理対応アプリケーションの作成

システム管理者または運用スタッフにすべての管理責任を負わせる代わりに、MBean をモニタする管理対応アプリケーションを作成して、一部のタスクを自動的に実行することができます。次に例を示します。

いつ JMX を使用するか

データベース、JMS 接続、JMS キャッシュなど、リソースを大量に消費する重要な Java EE アプリケーションは、そのリソース消費をモニタする機能を備えている必要があります。このようなアプリケーションでは、データベースに対する読み書きが常に行われるため、ロギング機能を使用して読み書き処理のたびにメッセージを出力することは不可能です。このようなモニタ機能の場合、JMX を使用することによって、容易に管理でき、ネットワーク リソースの利用を最適化する管理 (インスツルメンテーション) コードを記述できます。

アプリケーションの基本的な実行時メトリックをモニタする場合は、WebLogic Server に用意されているさまざまな独自の MBean を使用できます (『Oracle Fusion Middleware Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』の「ベスト プラクティス : WebLogic Server イベントのリスンを参照)。たとえば、既存の WebLogic Server MBean を使用してアプリケーションのサーブレットのヒット率や、サーブレット リクエストの処理時間を追跡できます。

WebLogic Server MBean はオペレーション センターに対してリソースの全般的な状態を通知できますが、特定のアプリケーションがどのようにリソースを使用しているかについての詳細な情報は提供できません。たとえば、WebLogic Server MBean は接続プール内の使用中の接続数を通知することはできますが、接続プールを使用しているアプリケーションは通知できません。ドメインに複数のアクティブなアプリケーションが存在し、一部の接続が常に使用されていることに気づいた場合、各アプリケーションがいつ接続を取得し、解放するかをモニタする MBean を作成します。また、停止していると見なされたセッションを終了する管理オペレーションを組み込むこともできます。

さらに、アプリケーションが独自のキャッシュを作成および保持し、アプリケーション コンテナの制御下にないデータ リポジトリに書き込む場合、そのキャッシュのサイズまたはリポジトリに書き込まれるデータの量をモニタする MBean を作成します。

JMX レイヤ

Java EE と同じように、JMX はコンポーネント ベースの技術であり、さまざまな種類のベンダが多様なコンポーネントを提供しています。こうした分業化によって、各ベンダはそれぞれの専門分野のソフトウェアだけの開発に専念できます。JMX では、これらのコンポーネントは以下のレイヤにまとめられます。

間接性と内部参照

JMX を理解するための 2 つの主要な概念は、間接性と内部参照です。これらの概念を採用することで、JMX アプリケーションは独自のクラス定義にアクセスすることなく独自のリソースを管理できるようになります。

JMX の一般的なモデルでは、分散サービス レイヤに属するアプリケーションは、インスツルメント レイヤに属するクラスと直接対話することがありません。代わりに、この間接性のモデルでは、JMX エージェント レイヤは以下のことを行う標準インタフェース (javax.management.MBeanServerConnection など) を提供します。

各クラスは、JMX を介してエクスポーズするプロパティとメソッドのセットを MBean サーバに通知します。クラスが JMX を介してエクスポーズするプロパティを MBean 属性と呼び、公開するメソッドをオペレーションと呼びます。JMX は、クラスがその属性とオペレーションを通知するために使用できる複数の方法 (設計パターン) を指定します。これらの設計パターンは、標準、動的、モデル、オープンというタイプの MBean として形式化されています。

標準 MBean タイプを実装するクラスは、その管理インタフェースを Java プログラミングとほぼ同じ方法で記述します。開発者は、JMX を介してエクスポーズされる各クラス プロパティのゲッターおよびセッター メソッドを備えた JMX インタフェース ファイルを作成します。インタフェース ファイルには、エクスポーズされる各クラス メソッドのラッパー メソッドも含まれます。クラスは、その JMX インタフェースの名前を宣言します。標準 MBean を MBean サーバに登録すると、MBean サーバはクラスとその JMX インタフェースを内部参照して、分散サービス レイヤにエクスポーズする JMX 属性およびオペレーションを決定します。また、MBean サーバは、インタフェースを記述する MBeanInfo オブジェクトを作成します。管理クライアントは、この MBeanInfo オブジェクトを調べてクラスの管理インタフェースについて学びます。

モデル MBean タイプを実装するクラスは、その独自の MBeanInfo オブジェクトを作成することによってその管理インタフェースを記述します。MBeanInfo オブジェクトは、JMX を介してエクスポーズするプロパティとメソッドを記述するメタデータ オブジェクト セットです。モデル MBean を MBean サーバに登録すると、MBean サーバはクラスを内部参照する代わりに既存の MBeanInfo オブジェクトを使用します。

通知とモニタ MBean

JMX では、2 通りの方法で MBean の変更をモニタできます。MBean は、特定のイベント (属性値の変更など) の発生時に通知を送信できます。また、モニタ MBean は、MBean を定期的にポーリングして属性値を取得できます。

以下の節では、JMX 通知とモニタ MBean について説明します。

JMX 通知をブロードキャストおよび受信する方法

MBean 作成の一部として、javax.management.NotificationEmitter インタフェースを実装できます。これにより、MBean はさまざまな種類のイベントが発生したときに通知を送信できます。たとえば、アプリケーションによる接続プールの使用状態を管理する MBean を作成するとします。この場合、アプリケーションが接続を作成したときに通知を送信し、接続を破棄したときに別の通知を送信するように MBean をコンフィグレーションできます。

通知をリスンするには、javax.management.NotificationListener.handleNotification() メソッドを実装するリスナ クラスを作成します。このメソッドの実装には、リスナが通知の受信時にアクションを実行するためのロジックを組み込みます。リスナ クラスを作成したら、リスナを MBean に登録する別のクラスを作成します。

デフォルトによって、MBean は登録されているすべてのリスナにすべての通知を送信します。しかし、リスナのフィルタを作成して登録することもできます。フィルタは、javax.management.NotificationFilter.isNotificationEnabled() メソッドを実装するクラスです。このメソッドの実装では、1 つまたは複数の通知タイプを指定します。この場合、タイプは、イベントを識別する通知オブジェクト内のユニークな文字列です (vendorA.appB.eventC など)。イベントの発生によって MBean が通知を生成する場合、MBean は通知をリスナに送信する前にフィルタの isNotificationEnabled() メソッドを呼び出します。通知タイプが isNotificationEnabled() で指定した値の 1 つと一致した場合、フィルタは true を返し、MBean は関連付けられているリスナにメッセージを送信します。

リスナおよびフィルタの作成および登録については、『Oracle Fusion Middleware Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』の「WebLogic Server MBean からの通知のリスン : 主な手順」を参照してください。JMX 通知の詳細については、JMX 1.2 仕様を参照してください。「関連ドキュメント」を参照してください。

図 2-2 に、MBean が送信した通知の一部だけを通知リスナが受信する基本システムを示します。

図 2-2 MBean からの通知の受信

図 2-2 の説明は図の下のリンクをクリックしてください。
「図 2-2 MBean からの通知の受信」の説明

モニタ MBean によるアクティブなポーリング

JMX には、モニタ MBean という MBean の仕様が含まれています。モニタ MBean をインスタンス化してコンフィグレーションすることにより、他の MBean を定期的に検査できます。モニタ MBean は、特定の MBean 属性が指定されたしきい値を超えた場合に JMX 通知を送信します。モニタ MBean では、MBean の属性の値そのもの、または数値属性の 2 つの連続する値の差異 (オプション) を観察できます。モニタ MBean が観察する値は、派生ゲージと呼びます。

派生ゲージが一連の条件を満たす場合、モニタ MBean は特定の通知タイプを送信します。また、属性値のモニタ中に一定のエラー状態が発生した場合にも通知を送信できます。

モニタ MBean を使用するには、モニタをコンフィグレーションして、観察対象の MBean に登録します。次に、リスナ クラスを作成して、そのクラスをモニタ MBean に登録します。モニタ MBean は非常に特殊な種類の通知のみを送信するので、通常、モニタ MBean からの通知をリスンする際にはフィルタは使用しません。

図 2-3 に、モニタ MBean を MBean に登録する基本システムを示します。NotificationListener がモニタ MBean に登録され、モニタ MBean 内の条件が満たされたときに通知を受信します。

図 2-3 モニタ MBean

図 2-3 の説明は図の下のリンクをクリックしてください。
「図 2-3 モニタ MBean」の説明