このトピックでは、WebSphere Application Server 管理アプリケーション・プログラミング・インターフェース (API) および Java Management Extensions (JMX) を使用する管理クライアント・プログラムの開発方法について説明します。
このトピックでは、MBean オペレーションの例についても説明します。MBean プログラミングについて詳しくは、参照資料を参照してください。 「API 資料」を選択し、次に「MBean インターフェース」を選択します。
この例は NodeAgent MBean の入手方法と使用方法を示していますが、これはご使用の製品には使用不可です。 ただし、NodeAgent MBean を入手し、使用する方法の説明は、ご使用の製品に使用可能なその他の MBeans に対して行うものと類似しています。
管理クライアント・プログラムは、 基本インストール内のアプリケーション・サーバーで稼働している AdminService オブジェクトでメソッドを呼び出す必要があります。
AdminClient クラスは、サポートされている Java Management Extensions (JMX) コネクター のいずれかを介して、リモートの AdminService オブジェクトにプロキシーを提供します。以下の例は、AdminClient インスタンスの作成方法を示しています。Properties connectProps = new Properties(); connectProps.setProperty( AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP); connectProps.setProperty(AdminClient.CONNECTOR_HOST, "localhost"); connectProps.setProperty(AdminClient.CONNECTOR_PORT, "8879"); connectProps.setProperty(AdminClient.USERNAME, "test2"); connectProps.setProperty(AdminClient.PASSWORD, "user24test"); AdminClient adminClient = null; try { adminClient = AdminClientFactory.createAdminClient(connectProps); } catch (ConnectorException e) { System.out.println("Exception creating admin client: " + e); }
この例では、 ご使用のサーバーにアクセスするために必要なプロパティーで、Properties オブジェクトをセットアップします。 この場合、Simple Object Access Protocol (SOAP) コネクターを使用して、 サーバーにアクセスします。コネクター・タイプの場合、値 AdminClient.CONNECTOR_TYPE_SOAP を使用します。
ローカル・ホストの代わりにリモート・ホストにアクセスするには、 そのホストのネットワーク解決可能名を使用します。
単一サーバー・インストールでは、アプリケーション・サーバー SOAP コネクターのデフォルト・ポート番号は 8880 です。
必要なプロトコルおよびセキュリティー環境などの要因に応じて、 他のプロパティーを設定する必要がある場合があります。 AdminClient インターフェースおよび追加の作成例の詳細については、Java Management Extensions (JMX) API 資料内の AdminClient インターフェースを参照してください。
[domainName]:property=value[,property=value]*WebSphere Application Server の場合、 ドメイン・ネームは WebSphere であり、管理用に定義されるキー・プロパティーは以下のようになります。
type | MBean のタイプ。例えば、Server、 TraceService、Java 仮想マシン (JVM) など。 |
name | MBean の個々のインスタンスの名前の ID。 |
cell | MBean が実行しているセルの名前。 |
node | MBean が実行しているノードの名前。 |
プロセス | MBean が実行しているプロセスの名前。 |
WebSphere Application Server の一部の MBeans は、追加のキー・プロパティーを使用します。 キー・プロパティーを持たない MBean は、WebSphere Application Server プロセスで MBean サーバーと ともに登録することができます。ただし、このような MBean は、 WebSphere Application Server が追加する分散機能拡張、例えば要求ルーティング、分散イベント通知などに加えることはできません。
*:type=Server,* | タイプ Server のすべての MBean |
*:node=Node1,type=Server,* | Node1 上のタイプ Server のすべての MBean |
*:type=JVM,process=server1,node=Node1,* | server1 node Node1 という名前のサーバーの JVM MBean |
*:process=server1,* | server1 という名前のすべてのサーバーのすべての MBean |
*:process=server1,node=Node1,* | Node1 上の server1 という名前のサーバーのすべての MBean |
String nodeName = "MyNode"; String query = "WebSphere:type=NodeAgent,node=" + nodeName + ",*"; ObjectName queryName = new ObjectName(query); ObjectName nodeAgent = null; Set s = adminClient.queryNames(queryName, null); if (!s.isEmpty()) nodeAgent = (ObjectName)s.iterator().next(); else System.out.println("Node agent MBean was not found");
残りのキー・プロパティーに対してワイルドカードを使用 することにより、このパターンは、ノード MyNode 上のタイプ NodeAgent の すべての MBean のオブジェクト名と一致します。ノードごとに 1 つのノード・エージェント しか存在しないため、ユーザーが必要な MBean を識別するにはこの情報で十分です。
AdminClient インターフェースは、AdminService インタ ーフェースに対してリモート呼び出しを実行し、照会と一致する MBean オブジェクト名のセットを取得します。 このメソッドに対する 2 番目のヌル・パラメーターは、最初のパラメータ ーで ObjectName パターンと一致する MBeans 上で、追加照会として使用できる 照会式 (QueryExp) オブジェクトです。
このエレメントは、ノード・エージェントの MBean ObjectName インスタンスです。
String opName = "launchProcess"; String signature[] = { "java.lang.String" }; String params[] = { "MyServer" }; try { adminClient.invoke(nodeAgent, opName, params, signature); } catch (Exception e) { System.out.println("Exception invoking launchProcess: " + e); }
呼び出されたメソッドはオブジェクト・インスタンスを戻します。 呼び出しコードはオブジェクト・インスタンスを使用して、呼び出されたオペレーションの正しい戻りの型 にキャストすることができます。launchProcess オペレーションはボイドと宣言されるため、 この例では戻り値を無視することができます。
adminClient.addNotificationListener(nodeAgent, this, null, null);
この例では、最初のパラメーターはノード・エージェント MBean の ObjectName です。 2 番目のパラメーターはリスナー・オブジェクトを識別し、これは NotificationListener インターフェースをインプリメントする必要があります。この場合、呼び出しオブジェクトは リスナーです。3 番目のパラメーターは、ユーザーが受け取りたい通知を指示するために使用できるフィルターです。 この値を null として残す場合、 この MBean からすべての通知を受け取ります。最後のパラメーターは、 通知が発行される際に、JMX API をユーザーに戻るように 設定するために使用できる handback オブジェクトです。
アプリケーション・サーバーが提供する他の拡張機能は、 1 回の呼び出しで、複数の MBean の通知リスナーとして登録する機能です。この登録は、 標準 JMX addNotificationListener メソッドの拡張機能である AdminClient インターフェースの addNotificationListenerExtended メソッドを通じて実行されます。 この拡張機能メソッドにより、現在は活動中でない MBeans に登録することもできます。 管理クライアント・プログラムの存続期間中に停止および再開できるリソースから イベントをモニターしたい状況では、この登録は重要になります。
public void handleNotification(Notification n, Object handback) { System.out.println("***************************************************"); System.out.println("* Notification received at " + new Date().toString()); System.out.println("* type = " + ntfyObj.getType()); System.out.println("* message = " + ntfyObj.getMessage()); System.out.println("* source = " + ntfyObj.getSource()); System.out.println( "* seqNum = " + Long.toString(ntfyObj.getSequenceNumber())); System.out.println("* timeStamp = " + new Date(ntfyObj.getTimeStamp())); System.out.println("* userData = " + ntfyObj.getUserData()); System.out.println("***************************************************"); }