このセクションでは Java™ Platform, Enterprise Edition (Java EE) サーバーへの接続方法と、複数のベンダー・サーバーの管理方法を説明します。
始める前に
この製品は、JSR-77 (Java Specification Requests 77) として知られる J2EE Management 仕様を完全に実装します。ただし、Java EE 仕様と
WebSphere® Application Server 実装の間の細かい相違点を理解しておくことが、Java 管理クライアント・プログラムを開発して、複数のベンダー・サーバーを管理する際に重要となります。
詳しくは、
Java Platform, Enterprise Edition (Java EE) Management Specification および MBean Java アプリケーション・プログラミング・インターフェース (API) に関する資料を参照してください。
このインフォメーション・センターでは、をクリックします。
このタスクについて
ご使用の管理クライアント・プログラムが WebSphere Application Server に排他的にアクセスする場合、Java API および WebSphere Application Server 定義 MBean を使用してこれらを管理することができます。プログラムが WebSphere Application Server と他の Java EE サーバーの両方にアクセスする必要がある場合は、Java EE Management 仕様で定義された API を使用します。
手順
- Java EE サーバーに接続します。
Java Naming and Directory Interface (JNDI) から管理エンタープライズ Bean を検索することによって、サーバーに接続します。管理エンタープライズ Bean は、アプリケーション・サーバーで稼働する
MBean サーバーにリモート・インターフェースを提供します。
管理エンタープライズ Bean は、
WebSphere Application Server 固有の機能を提供しないことを除いて、
WebSphere Application Server 管理クライアントと同様に作動します。以下の例は、管理エンタープライズ Bean の検索方法を示しています。
import javax.management.j2ee.ManagementHome;
import javax.management.j2ee.Management;
Properties props = new Properties();
props.setProperty(Context.PROVIDER_URL, "iiop://myhost:2809");
Context ic = new InitialContext(props);
Object obj = ic.lookup("ejb/mgmt/MEJB");
ManagementHome mejbHome = (ManagementHome)
PortableRemoteObject.narrow(obj, ManagementHome.class);
Management mejb = mejbHome.create();
例では、Remote Method Invocation (RMI) コネクターのホストおよびポートを渡すことによって、
アプリケーション・サーバーに対する初期コンテキストを取得します。
RMI ポートを明示的にコーディングする必要があります (この場合、2809)。
検索メソッドは、管理エンタープライズ Bean ホームのロケーションである
ejb/mgmt/MEJB パスの検索を実行します。
次に、次のステップで使用する mejb Stateless Session Bean を作成します。
- 複数のベンダー・アプリケーション・サーバーを管理します。
mejb ステートレス・ セッション Bean の
作成後、それを使用して、アプリケーション・サーバーを管理することができます。
アプリケーション・サーバーからのコンポーネントは、仕様が定義する MBean として表示されます。
これらの MBean には、必ず j2eeType プロパティーがあります。
このプロパティーは、仕様が定義するタイプ・セットの 1 つです。
これらのすべてのタイプに、公開される属性のセットがあります。
次の例を使用して、
複数のベンダー・アプリケーション・サーバーを管理してください。
例では Java 仮想マシン (JVM) MBean を使用して、アプリケーション・サーバー用の現行のヒープ・サイズを判別します。
ObjectName jvmQuery = new ObjectName("*:j2eeType=JVM,*");
Set s = mejb.queryNames(jvmQuery, null);
ObjectName jvmMBean = (ObjectName) s.iterator().next();
boolean hasStats = ((Boolean) mejb.getAttribute(jvmMBean,
"statisticsProvider")).booleanValue();
if (hasStats) {
JVMStats stats = (JVMStats) mejb.getAttribute(jvmMBean,
"stats");
String[] statisticNames = stats.getStatisticNames();
if (Arrays.asList(statisticNames).contains("heapSize")) {
System.out.println("Heap size: " + stats.getHeapSize());
}
}
queryNames() メソッドは、最初に JVM MBean を照会します。getAttribute メソッドは、
statisticsProvider 属性を取得し、この MBean が統計を提供するかどうかを判別します。
MBean が提供している場合、例では stats 属性にアクセスし、
getHeapSize() メソッドを呼び出してヒープ・サイズを取得します。
タスクの結果
この例の長所は、任意のベンダー・アプリケーション・サーバーで実行できるという点です。
MBean がオプションで定義済みインターフェース (この場合、StatisticsProvider インターフェース) を実装できることを実証します。
MBean が StatisticsProvider インターフェースを実装すると、アプリケーション・サーバーが特定の統計 (この場合、ヒープ・サイズ) をサポートするかどうかがわかります。
この仕様はヒープ・サイズを定義しますが、この値はオプションです。
アプリケーション・サーバーがヒープ・サイズをサポートする場合は、JVM のヒープ・サイズを表示することができます。