WebLogic JMX Service プログラマーズ ガイド
WebLogic Server は、オープンで拡張可能な管理サービスを提供するために、Sun Microsystems, Inc. の Java Management Extensions (JMX) 1.0 仕様を実装しています。WebLogic Server は、便利な独自のメソッド群とその他の拡張を追加して WebLogic Server 分散環境での作業を容易にします。
すべての WebLogic Server リソースはこれらの JMX ベースのサービスによって管理され、WebLogic Server の内部で実行されるサードパーティのサービスとアプリケーションも同様に管理できます。それらの JMX サービスを利用する独自の管理ユーティリティを作成して、WebLogic Server リソースおよびアプリケーションを管理できます。
以下の節では、WebLogic Server JMX サービスについて概説します。
JMX 1.0 仕様は、http://jcp.org/aboutJava/communityprocess/final/jsr003/index.html からダウンロードすると参照できます。ダウンロードしたアーカイブに、API のドキュメントが格納されています。
WebLogic Server 内部のサブシステム (JMS プロバイダや JDBC コンテナなど) およびそれらが管理する項目 (JMS サーバや JDBC 接続プールなど) を、WebLogic Server 管理対象リソースと呼びます。各管理対象リソースには、管理用にコンフィグレーションおよびモニタできる一連の属性が組み込まれています。たとえば、各 JDBC 接続プールには、その名前、ドライバ名、初期容量、およびキャッシュ サイズを定義する属性が組み込まれています。一部の管理対象リソースは、管理用に使用できるメソッド (操作) を備えています。WebLogic JMX サービスは、1 つまたは複数の管理対象 Bean (MBean) を通じてこれらの管理属性および操作を公開します。MBean は JMX 仕様に基づいて開発される具体的な Java クラスです。MBean を使用すると、管理対象リソース内の各管理属性に対するゲッター操作とセッター操作とともに、リソースが提供するその他の管理操作を実行できます(図 1-1 を参照)。
管理対象リソースのコンフィグレーションのために属性および操作をエクスポーズする WebLogic Server MBean のことはコンフィグレーション MBean と呼び、管理対象リソースの実行時状態に関する情報を提供する MBean のことは実行時 MBean と呼びます。WebLogic Server ドメインでリソースをコンフィグレーションする機能とリソースの実行時状態に関するデータを表示する機能はまったく異なり、コンフィグレーション MBean と実行時 MBean は異なる方法で分散および管理されます。
以下の節では、WebLogic Server が MBean を配布および管理する方法について説明します。
WebLogic Server の管理ドメインは、WebLogic Server リソースの論理的に関連したグループです。ドメインには、管理サーバと呼ばれる特殊な WebLogic Server インスタンスが含まれます。管理サーバでは、ドメイン内のすべてのリソースを一元的にコンフィグレーションおよび管理します。通常は、管理対象サーバと呼ばれる WebLogic Server インスタンスも含めてドメインをコンフィグレーションします。開発したアプリケーションや EJB などのリソースは管理対象サーバにデプロイし、管理サーバはコンフィグレーションや管理の目的にのみ使用します。
注意 : WebLogic Server では、Administration Console、weblogic.Admin
ユーティリティ、または WebLogic Ant タスクを使用したマルチドメインの対話はサポートされていません。ただし、この制限によって、ユーザが記述した Java アプリケーションが複数のドメインに同時にアクセスできなくなるわけではありません。
複数の管理対象サーバを使用すると重要なアプリケーションでロード バランシングとフェイルオーバを利用でき、1 つの管理サーバは管理対象サーバ インスタンスの管理を容易にします。ドメインの詳細については、『WebLogic Server のコンフィグレーションと管理』の「WebLogic Server ドメインの概要」を参照してください。
管理責任を管理サーバに集中させる WebLogic Server モデルをサポートするために、管理サーバはドメイン内のすべてのサーバ インスタンスのすべての管理対象リソースのコンフィグレーション MBean をホストします。さらに、管理サーバはサーバ インスタンスを停止して再起動するときに利用できるようにコンフィグレーション データの変更を保存します。
WebLogic Server リソースのコンフィグレーションを変更するには、管理サーバでコンフィグレーション MBean の値を修正します。
各管理対象サーバはパフォーマンスを向上させるために、ドメインのすべてのコンフィグレーション MBean のローカル レプリカを作成します。Bean と対話する WebLogic Server サブシステムおよびアプリケーションは、管理サーバに対してリモート呼び出しを実行する代わりに、ローカル サーバ上のレプリカを使用します(図 1-2 を参照)。
管理サーバ上のコンフィグレーション MBean は管理 MBean と呼ばれ、管理対象サーバ上のレプリカはローカル コンフィグレーション MBean と呼ばれます。
注意 : 管理サーバは、管理 MBean だけでなく、それ独自のサブシステムおよびその管理サーバにデプロイされるすべてのアプリケーションによって使用されるローカル コンフィグレーション MBean もホストします。
この節では、管理 MBean とローカル コンフィグレーション MBean がどのように初期化されるのか、コンフィグレーション データの変更がどのように WebLogic Server システム全体に伝播されるのか、および属性値をどのように変更すればサーバ インスタンスの再起動時に利用可能になるのかを説明します。
config.xml
ファイルのデータを使用してそのドメインのすべての管理 MBean を初期化します(図 1-3 を参照)。 たとえば、管理対象サーバ A について、config.xml
ファイルにそのリスン ポートが 8000 であると指定されているとします。この場合、weblogic.Server
コマンドを使用して管理対象サーバ A を起動したときに起動オプションとして -Dweblogic.ListenPort=7501
を指定すると、現在のサーバ セッションのリスン ポートが変更されます。管理対象サーバは管理 MBean のレプリカを作成しますが、リスン ポートの値として 7501
を代わりに使用します。管理対象サーバ A を再起動すると、このサーバは再び config.xml
ファイルの値 8000
を使用します(図 1-4 を参照)。
管理サーバの起動時に config.xml
の値をオーバーライドするために使用した起動コマンドの引数は、管理サーバ上のローカル コンフィグレーション MBean の値にのみ影響します。コマンド引数は管理 MBean の値には影響を与えず、したがって以降のサーバ セッションにも影響を与えません(図 1-5 を参照)。
注意 : 属性値の変更は、管理 MBean のみで行うことをお勧めします。ローカル コンフィグレーション MBean の属性値は変更しないでください。他の管理対象サーバのデータをレプリケートする際、管理対象サーバは管理 MBean に格納された値を使用します。管理 MBean とローカル コンフィグレーション MBean の間で値に相違があると、通信に問題が起こることがあります。
管理対象サーバ独立 (MSI) は、管理サーバが利用できない場合に管理対象サーバを起動できる機能です。管理対象サーバで MSI がコンフィグレーションされている場合、その管理対象サーバには、そのローカル コンフィグレーション MBean に加え、ドメインのすべての管理 MBean のコピーが格納されます。
管理対象サーバ上の管理 MBean とは対話しないでください。これらはドメインの前回の正常なコンフィグレーションを反映しており、管理対象サーバを MSI モードで起動するためだけに使用します。管理対象サーバで管理 MBean を変更すると、管理対象サーバのコンフィグレーションが管理サーバと一致しなくなり、予測できない結果になることがあります。また、管理対象サーバは、他の管理対象サーバ上の管理 MBean を認識しません。
MSI の詳細については、『WebLogic Server のコンフィグレーションと管理』の「管理サーバにアクセスできない場合の管理対象サーバの起動」を参照してください。
コンフィグレーション MBean のドキュメントを参照するには、次の手順に従います。
右のペインに、このパッケージの要約が表示されます(図 1-6 を参照)。
図 1-6 configuration パッケージの Javadoc
WebLogic Server 管理対象リソースは、1 つまたは複数の実行時 MBean を通じてその実行時の状態に関するパフォーマンス メトリックなどの情報を提供します。実行時 MBean はコンフィグレーション MBean のようにレプリケートされず、基になる管理対象リソースと同じサーバ インスタンス上だけに存在します。
実行時 MBean は一時的なデータだけを保持し、データを config.xml
ファイルに保存しません。サーバ インスタンスを停止すると、実行時 MBean から得られる実行時の統計とメトリックはすべて破棄されます。
次の図に (図 1-7) 、実行時 MBean、管理 MBean、およびローカル コンフィグレーション MBean がドメイン内でどのように配布されるかを示します。
この値は、Administration Console、weblogic.Admin
ユーティリティ、または MBean API を使用して表示できます(図 1-8 を参照)。
図 1-8 Administration Console からの実行時メトリックの参照
また、これらのインタフェースを使用すると、実行時の値を変更することもできます。たとえば、weblogic.management.runtime.DeployerRuntimeMBean
を使用すると、デプロイされているモジュールの実行時の状態を変更することによってそのモジュールをアクティブ化および非アクティブ化できます。
実行時 MBean のドキュメントを参照するには、次の手順に従います。
右のペインに、このパッケージの要約が表示されます(図 1-9 を参照)。
WebLogic Security サービスでは、WebLogic Server のセキュリティを管理する MBean および MBean を新しく生成するためのツールを提供します。これらの MBean はセキュリティ MBean と呼ばれ、その利用モデルはこのマニュアルで説明するモデルとは異なります。セキュリティ MBean の詳細については、『WebLogic Security サービスの開発』を参照してください。
WebLogic Server には数百もの MBean が用意されており、それらの多くは、EJB、Web アプリケーション、およびその他のデプロイ可能な J2EE モジュールのコンフィグレーションとモニタに使用されます。アプリケーションまたはサービスをコンフィグレーションするために追加の MBean を使用する場合、独自の MBean を作成することができます。
作成する MBean には、JMX 仕様 (http://jcp.org/aboutJava/communityprocess/final/jsr003/index.html からダウンロード可能) で定義されているすべての JMX 1.0 機能を活用できます。
ただし、WebLogic Server の JMX 拡張を使用できるのは、WebLogic Server に用意されている MBean だけです。たとえば、アプリケーション用に作成した独自の MBean は、そのデータを config.xml
ファイルに保存できず、次節 (「MBean サーバおよび MBeanHome インタフェース」) で説明する型保障インタフェースを使用できません。
WebLogic Server インスタンスの内部では、MBean を登録し、MBean へのアクセスを提供する実際の処理は MBean サーバ サブシステムに委託されます。管理対象サーバ上の MBean サーバは、現在の管理対象サーバ上のローカル コンフィグレーション MBean と実行時 MBean だけを登録し、それらへのアクセス提供します。管理サーバ上の MBean サーバは、ドメインの管理 MBean に加え、管理サーバ上のローカル コンフィグレーション MBean と実行時 MBean を登録し、それらへのアクセスを提供します。
注意 : 管理対象サーバ独立 (MSI) がコンフィグレーションされている管理対象サーバでは、MBean サーバは、管理サーバが利用できない場合にサーバが起動に使用する管理 MBean のレプリカも登録します。それらの管理 MBean のレプリカとは対話しないでください。詳細については、「管理対象サーバ独立のための MBean のレプリケーション」を参照してください。
MBean サーバ サブシステムにアクセスするには、weblogic.management.MBeanHome
インタフェースを使用します。MBeanHome
からは、以下のインタフェースを使用して MBean サーバおよびその MBean と対話できます (図 1-10 を参照)。
javax.management.MBeanServer
。MBean と対話するための標準 JMX インタフェースです。このインタフェースを使用すると、MBean サーバに登録されている MBean をルックアップし、MBean で使用できる操作セットを判別し、各操作が返すデータ型を調べることができます。MBeanServer
インタフェースを介して MBean 操作を呼び出す場合は、標準 JMX メソッドを使用する必要があります。次に例を示します。MBeanHome.getMBeanServer().getAttribute(
MBeanObjectName
,
attributeName
)
MBeanHome.getMBeanServer().setAttribute(
MBeanObjectName
,
attributeName
)
MBeanHome.getMBeanServer().invoke(
MBeanObjectName
,
operationName
,
params
,
signature
)
MBeanServer
API の詳細なリストについては、http://jcp.org/aboutJava/communityprocess/final/jsr003/index.html からダウンロード可能な JMX 1.0 API のドキュメントを参照してください。ダウンロードしたアーカイブに、API ドキュメントが格納されています。
MBeanServer
インタフェースは、ユーザが作成し、登録した MBean (WebLogic 以外の MBean) と対話する唯一の方法です。
weblogic.management.RemoteMBeanServer
。javax.management.MBeanServer
および java.rmi.Remote
インタフェースの拡張です。
RemoteMBeanServer
インタフェースは、標準的な JMX の技術を使用してリモートの JVM から WebLogic Server MBean にアクセスする場合や、リモートの JVM から WebLogic 以外の MBean と対話する場合に使用します。WebLogic Server のすべてのインスタンスは、その MBean サーバにホストされている MBean にアクセスするためのローカル MBeanHome インタフェースを提供します。
管理対象サーバと管理サーバの場合、ローカル MBeanHome
インタフェースは、現在のサーバの実行時 MBean とドメイン内のすべてのローカル コンフィグレーション MBean へのアクセスを提供します。
管理サーバは、MBeanHome
インタフェースのもう 1 つのインスタンスを提供します。この管理 MBeanHome は、管理 MBean に加え、ドメイン内のすべてのサーバ インスタンス上の MBean へのアクセスを提供します。この管理 MBeanHome
は RMI を使用して管理対象サーバ上の MBean と対話します。このため、ネットワーク リソースの使用量が増加し、ローカル MBeanServer
または MBeanHome
インタフェースを使用するときより時間がかかる場合があります(図 1-11 を参照)。
図 1-11 ローカルおよび管理 MBeanHome インタフェース
ローカル MBeanHome
と管理 MBeanHome
は同じインタフェース クラスの 2 つのインスタンスであるため、この 2 種類の MBeanHome
の API は MBeanHome
インスタンスの名前とアクセス可能な MBean のセットが異なるだけです。
管理ニーズに応じて、MBean API を使用して要求時のみに MBean 属性を参照することも、WebLogic Server 通知およびモニタ機能を使用して MBean 属性の変更時にレポート (JMX 通知) を自動的にブロードキャストすることもできます。
WebLogic Server Administration Console と weblogic.Admin
ユーティリティは、WebLogic Server JMX サービスを利用する管理ユーティリティの例です。これらのインタフェースを使用すると、JMX アプリケーションを開発する前に WebLogic Server の管理サービスに慣れることができます。
Administration Console は、WebLogic Server JMX API を呼び出すサーブレットを備えた Web アプリケーションです。Administration Console に表示されるほとんどの値は、管理 MBean と実行時 MBean の属性です。Administration Console はローカル コンフィグレーション MBean を読み書きしないので、サーバ インスタンスで現在使用されていない値をレポートする可能性があります。たとえば、weblogic.Server
起動オプションを使用してコンフィグレーション済みリスン ポートをオーバーライドした場合、Administration Console はオーバーライドした値ではなく config.xml
ファイル中の値をレポートします。
Administration Console がどの MBean 属性をレポートしているかを確認するには、一番上のバナーの疑問符記号をクリックします。ヘルプ ウィンドウで「属性」リンクをクリックすると、Administration Console のフィールドと関連付けられた MBean クラスおよび属性を確認できます。
Administration Console のフィールドの隣にある注意アイコン (黄色い三角形に感嘆符のアイコン) は、属性が動的ではないことを示します。このような属性を変更した場合、基になる管理対象リソースはサーバを再起動するまで新しい値を使用できません。
動的な値を Administration Console で変更した場合、対応する管理 MBean が更新されます。この変更がローカル コンフィグレーション MBean に伝播される方法については、「コンフィグレーション MBean のライフサイクル」を参照してください。
weblogic.Admin
ユーティリティには、管理 MBean とコンフィグレーション MBean のインスタンスの作成、値の取得と設定、操作の呼び出し、および削除を行うコマンドが用意されています。また、実行時 MBean の値の取得と操作の呼び出しを行うコマンドも用意されています。WebLogic Server 管理サービスとプログラム的に対話する JMX アプリケーションを作成する代わりに、このユーティリティを使用するシェル スクリプトを作成することもできますが、JMX アプリケーションのパフォーマンスの方が、コマンドライン ユーティリティを呼び出すシェル スクリプトより優れています。
weblogic.Admin
ユーティリティでは、JMX コードを記述する前に、MBean のオブジェクト名を検証したり、コマンドラインから属性を取得および設定したりすることもできます。このマニュアルの以降の章では、JMX 開発の過程で weblogic.Admin
ユーティリティを使用する例を紹介します。
詳細については、『WebLogic Server コマンド リファレンス』の「WebLogic Server MBean を管理するためのコマンド」を参照してください。