カスタム・フィルターを作成し、プロキシー・サーバーにデプロイする

カスタマイズされたロギングなど、通常の製品設定では提供されない機能をプロキシー・サーバーで実行する必要がある場合、プロキシー・サーバー用にカスタム・フィルターを作成できます。

始める前に

  • 作成するフィルターを含む成果物を保管する場所を決めます。 この成果物は、ローカルまたはリモートのファイル・システムからインポートできます。
  • カスタム・フィルターのインストール先となるプロキシー・サーバーの名前を把握しておく必要があります。
  • このプロキシー・サーバーの制御に使用する管理コンソールがまだ始動していない場合には、始動する必要があります。

このタスクについて

フィルターを使用すると、標準的な製品設定で通常提供される制御のほかに、オプションの 2 次制御を行うことができます。 例えば、アプリケーションでロギング・フィルター・メカニズムを使用して、特定のメッセージ・キーを持つすべてイベントを抑止することができます。

手順

  1. カスタム・フィルターを作成します。
    1. com.ibm.wsspi.proxy.filter.http.HttpDefaultFilter を拡張するクラスを作成します。
    2. abstract doFilter メソッドをオーバーライドして、任意で、init メソッドおよび destroy メソッドをオーバーライドします。init メソッドおよび destroy メソッドをオーバーライドする場合は、これらのメソッドの super バージョンを呼び出して、フィルターのライフ・サイクル機能を保存する必要があります。
    3. 新規 doFilter メソッドを作成します。このメソッドは、HttpProxyServiceContext インターフェースを使用します。
      この新規 doFilter メソッドは、以下を実行するように作成することができます。
      • 要求に関連付けられた成果物、または応答自体、応答コード、またはヘッダーなどの応答に関連付けられた成果物を変更する。
      • 要求および応答の両方に関連付けられた成果物を変更する。
      • 要求または応答のいずれかの情報を取得する。
      • 要求および応答の両方の情報を取得する。
    4. プロキシー・サーバー・フィルターの管理対象 bean (MBean) である proxyFilterMbean を使用して、フィルターに正しい順序を指定します。
      proxyFilterMbean = AdminControl.queryNames('type=ProxyServerFilterBean,*')
      AdminControl.invoke(proxyFilterMbean, 'viewAllFilters')
      プロキシー・サーバーのすべてのフィルターが処理される順序が表示されます。
    5. フィルターの記述子ファイル filter-context.xml を作成します。

      このファイルを使用して、この記述子を持つすべてのフィルターが定義されます。 以下は、filter-context.xml ファイルの基本バージョンの例です。

      この例では、descriptor によって、要求および応答の両方で該当するフィルターが実行される場所と時期が決定されます。 filter point により、フィルターが実行される場所が決定されます。 この例では、フィルターは、要求が受信された後に実行されます。 ordinal により、フィルターが処理される時期が、同じフィルター・ポイントにある他のフィルターを基準にして決定されます。 ordinal の値が高くなればなるほど、処理キューにおけるそのフィルターの優先順位は高くなります。

      <?xml version="1.0" encoding="UTF-8>
      <filter-context xmlns="http://www.ibm.com/2003/FilterContextSchema">
         <description>Proxy Filter Sample descriptor</description>
         <display-name>Proxy Sample Filter</display-name>
      
         <filter>          <filter-name>HttpRequestFilter</filter-name
                <filter-class>com.ibm.ws.proxy.sample.HttpRequestFilter</filter-class>
                <description>HTTP sample filter to run at REQUEST filter point</description>
                <display-name>HTTP Request Sample</display-name>
                <protocol-name>HTTP</protocol-name>
                      <filter-point>RequestReceived</filter-point>
                <ordinal>1000</ordinal>
         </filter>
      </filter-context>
    6. フィルター用にコンパイルされた .class ファイルおよびフィルター記述子を JAR ファイルに組み込みます。
  2. カスタム・フィルターを含む成果物 (JAR ファイル) をインポートします。
    1. 管理コンソールで、「アプリケーション」>「アプリケーション・タイプ」>「アセット」>「インポート」をクリックします。
    2. 「ローカル・ファイル・システム」または「リモート・ファイル・システム」を選択して、JAR ファイルが置かれている場所を指定します。
    3. JAR ファイルの完全修飾名を指定します。

      JAR ファイルの完全修飾名には、ファイルが置かれているディレクトリーのパスとファイル名が含まれます。 JAR ファイルの完全修飾名が分からない場合は、参照機能を使用してファイルを見つけることができます。

  3. この成果物を含むビジネス・レベル・アプリケーション (BLA) を作成します。
    1. 管理コンソールで、「アプリケーション」> 「新規アプリケーション」>「新規ビジネス・レベル・アプリケーション」の順にクリックします。
    2. 「名前」フィールドで、作成する新規アプリケーションの名前を指定します。

      また、「説明」フィールドにアプリケーションの説明を指定することもできます。

    3. 「適用」をクリックします。
  4. 成果物から BLA 構成単位 (CU) を作成します。
    1. 「デプロイ済みアセット (Deployed assets)」テーブルで、「追加」>「アセットの追加 (Add asset)」をクリックします。
    2. 最初のステップでインポートした成果物の名前を選択して、「継続」をクリックします。
    3. 必要に応じて構成単位設定を変更し、「ターゲットの変更 (Modify target)」をクリックします。
    4. 使用可能なデプロイメント・ターゲットのリストから、この CU をデプロイするプロキシー・サーバーを選択し、「OK」をクリックします。

      「OK」をクリックすると、製品は、選択したプロキシー・サーバーに構成単位をマップします。

    5. この構成単位に関連するリレーションシップ・オプションを指定します。
    6. 「終了」をクリックします。

    製品が CU を正常に追加したことを確認するために、「アプリケーション」>「ビジネス・レベル・アプリケーション」>application_name」をクリックします。 製品により、CU が正常に追加された場合は、CU の名前がこの BLA のデプロイ済みアセットのリストに表示されます。

  5. プロキシー・サーバーを始動します。
  6. フィルターを含む BLA を開始します。

タスクの結果

これで、フィルターがプロキシー・サーバー上で実行されるようになります。

次のタスク

proxyFilterMbean プロキシー・サーバー・フィルター MBean を使用して、フィルターがプロキシー・サーバーにインストールされていること、および、そのフィルターが、プロキシー・サーバーにデプロイされている他のフィルターに対して正しい順序で処理されることを確認します。 このフィルターが処理される順序を変更する必要がある場合には、proxyFilterMbean MBean に対して modifyOrdinal コマンドを実行します。

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjpx_proxyfilter
ファイル名:tjpx_proxyfilter.html