WebSphere Application Server - Express, Version 6.0.x   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows

             目次と検索結果のパーソナライズ化

管理クライアント・プログラムの開発

このトピックでは、WebSphere Application Server 管理アプリケーション・プログラミング・インターフェース (API) および Java Management Extensions (JMX) を使用する管理クライアント・プログラムの開発方法について説明します。

このタスクについて

WebSphere Application Server 管理 API は、 分散システムの操作面の制御と、構成を更新するための機能を提供します。AdminClient インターフェースについて詳しくは、参照資料を参照してください。 API 資料」を選択し、次に、 「アプリケーション・プログラミング・インターフェース」>「com.ibm.websphere.management」>「AdminClient」を参照してください。

このトピックでは、MBean オペレーションの例についても説明します。MBean プログラミングについて詳しくは、参照資料を参照してください。 API 資料」を選択し、次に「MBean インターフェース」を選択します。

この例は NodeAgent MBean の入手方法と使用方法を示していますが、これはご使用の製品には使用不可です。 ただし、NodeAgent MBean を入手し、使用する方法の説明は、ご使用の製品に使用可能なその他の MBeans に対して行うものと類似しています。

プロシージャー

  1. AdminClient インスタンスを作成します。

    管理クライアント・プログラムは、 基本インストール内のアプリケーション・サーバーで稼働している 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);
    }
    1. Properties オブジェクトをセットアップします。

      この例では、 ご使用のサーバーにアクセスするために必要なプロパティーで、Properties オブジェクトをセットアップします。 この場合、Simple Object Access Protocol (SOAP) コネクターを使用して、 サーバーにアクセスします。コネクター・タイプの場合、値 AdminClient.CONNECTOR_TYPE_SOAP を使用します。

    2. 単純化するために、 サーバーとして同一マシン上でクライアント・プログラムを実行します。ホスト名として localhost を使用します。

      ローカル・ホストの代わりにリモート・ホストにアクセスするには、 そのホストのネットワーク解決可能名を使用します。

    3. サーバー SOAP コネクターが listen しているポート番号を設定します。

      単一サーバー・インストールでは、アプリケーション・サーバー SOAP コネクターのデフォルト・ポート番号は 8880 です。

    4. 接続プロパティーを設定後、AdminClientFactory クラスおよび Properties オブジェクトを使用して、選択済みサーバーに接続される AdminClient オブジェクトを 作成します。

      必要なプロトコルおよびセキュリティー環境などの要因に応じて、 他のプロパティーを設定する必要がある場合があります。 AdminClient インターフェースおよび追加の作成例の詳細については、Java Management Extensions (JMX) API 資料内の AdminClient インターフェースを参照してください。

  2. MBean を検出します。 AdminClient インスタンスを取得する場合、 それを使用して、管理サーバーおよびアプリケーション・サーバー内の管理対象リソースに アクセスすることができます。各管理対象リソースは、そのリソースにアクセスする際に使用される AdminService に MBean を登録します。 MBean は、MBean を識別する ObjectName インスタンスによって表されます。 ObjectName インスタンスは、 ドメイン・ネームと、それに続く 1 つ以上のキー・プロパティーの順不同のセットから構成されます。 このドメイン・ネームの構文は以下のとおりです。
    [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 が追加する分散機能拡張、例えば要求ルーティング、分散イベント通知などに加えることはできません。

    ObjectName インスタンスのキー・プロパティーの完全なセットを知っている場合は、 それを使用して、それが識別する MBean を検出することができます。ただし、キー・プロパティーをすべて知らないで MBean を検出する方が、通常はより実用的であり、便利です。 突き合わせる必要のないキー・プロパティーについては、ワイルドカード文字のアスタリスク (*) を使用します。 次のテーブルは、単一または複数の MBean を突き合わせる ワイルドカード・キー・プロパティーを持つオブジェクト名の例の一部を提供します。
    *: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
    キー・プロパティーに一致するオブジェクト名 を使用して照会することにより、MBean を探し出すことができます。以下の例は、 ノード MyNode のノード・エージェント用の 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");
    1. タイプおよびノードのキー・プロパティーを指定する照 会ストリングを使用して、ObjectName インスタンスを構築します。

      残りのキー・プロパティーに対してワイルドカードを使用 することにより、このパターンは、ノード MyNode 上のタイプ NodeAgent の すべての MBean のオブジェクト名と一致します。ノードごとに 1 つのノード・エージェント しか存在しないため、ユーザーが必要な MBean を識別するにはこの情報で十分です。

    2. この ObjectName インスタンスを、 AdminClient インターフェースの queryNames メソッドに提供します。

      AdminClient インターフェースは、AdminService インタ ーフェースに対してリモート呼び出しを実行し、照会と一致する MBean オブジェクト名のセットを取得します。 このメソッドに対する 2 番目のヌル・パラメーターは、最初のパラメータ ーで ObjectName パターンと一致する MBeans 上で、追加照会として使用できる 照会式 (QueryExp) オブジェクトです。

    3. セット・イテレーターを使用し、最初 (この場合は 唯一) のエレメントを取得します。

      このエレメントは、ノード・エージェントの MBean ObjectName インスタンスです。

  3. MBean を使用します。 特定の MBean ができることは、 その MBean の管理インターフェースによります。MBean は、以下を宣言することができます。
    • ユーザーが取得または設定できる属性
    • ユーザーが呼び出すことができるオペレーション
    • ユーザーがリスナーを登録できる通知
    WebSphere Application Server から提供される MBeans の場合、 サポートされるインターフェースについての情報は MBean API 資料で参照できます。 以下の例で は、上記で検出した NodeAgent MBean で使用可能なオペレーションの 1 つを呼び出します。 以下の例では、MyServer アプリケーション・サーバーを始動しま す。
    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);
    }
    AdminClient.invoke メソッドは、 MBean でオペレーションを呼び出す一般的な方法です。パラメーターは次のとおりです。
    • ターゲット MBean のオブジェクト名、nodeAgent
    • オペレーションの名前、opName
    • オペレーション・パラメーターが含まれるオブジェクト配列、params
    • オペレーション・シグニチャーが含まれるストリング配列、signature
    この例の launchProcess オペレーションは、始動するサーバーを識別するストリングである 単一パラメーターを持ちます。

    呼び出されたメソッドはオブジェクト・インスタンスを戻します。 呼び出しコードはオブジェクト・インスタンスを使用して、呼び出されたオペレーションの正しい戻りの型 にキャストすることができます。launchProcess オペレーションはボイドと宣言されるため、 この例では戻り値を無視することができます。

  4. イベントに登録します。 リソースの管理に加えて、 JMX API は、特定の管理イベントをモニターするアプリケーションもサポートしています。 特定のイベントは、サーバーが始動する際などに通知を作成します。 管理アプリケーションは、これらの通知に対するリスナーとして登録できます。 WebSphere Application Server は、JMX 通知モデルの完全インプリメンテーションを提供し、 分散環境で通知を受信できるように追加機能も提供しています。 WebSphere Application Server MBeans から発行される通知の完全なリストについては、MBean API 資料内の「com.ibm.websphere.management.NotificationConstants」クラスを参照してください。 以下の例は、 ObjectName ノード・エージェントを使用して、MBean から発行されるイベント通知への オブジェクトの登録方法を示します。
    adminClient.addNotificationListener(nodeAgent, this, null, null);

    この例では、最初のパラメーターはノード・エージェント MBean の ObjectName です。 2 番目のパラメーターはリスナー・オブジェクトを識別し、これは NotificationListener インターフェースをインプリメントする必要があります。この場合、呼び出しオブジェクトは リスナーです。3 番目のパラメーターは、ユーザーが受け取りたい通知を指示するために使用できるフィルターです。 この値を null として残す場合、 この MBean からすべての通知を受け取ります。最後のパラメーターは、 通知が発行される際に、JMX API をユーザーに戻るように 設定するために使用できる handback オブジェクトです。

    アプリケーション・サーバーが提供する他の拡張機能は、 1 回の呼び出しで、複数の MBean の通知リスナーとして登録する機能です。この登録は、 標準 JMX addNotificationListener メソッドの拡張機能である AdminClient インターフェースの addNotificationListenerExtended メソッドを通じて実行されます。 この拡張機能メソッドにより、現在は活動中でない MBeans に登録することもできます。 管理クライアント・プログラムの存続期間中に停止および再開できるリソースから イベントをモニターしたい状況では、この登録は重要になります。

  5. イベントを処理します。 オブジェクトは、handleNotification メソッドを介して JMX イベント通知を 受信します。このメソッドは NotificationListener インターフェースによって定義され、 すべてのイベント受信側にインプリメントされなければなりません。以下の例は、 受信する通知をレポートする handleNotification メソッドのインプリメンテーションです。
    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("***************************************************");
    }



サブトピック
例: 管理クライアント・プログラム
関連タスク
WebSphere Application Server 管理 Java API を使用したカスタム Java 管理クライアント・プログラムの作成
アプリケーション・クライアントの使用
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 11:31:28 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/tjmx_develop.html