カスタマイズされたロギングなど、通常の製品設定では提供されない機能をプロキシー・サーバーで実行する必要がある場合、プロキシー・サーバー用にカスタム・フィルターを作成できます。
始める前に
- 作成するフィルターを含む成果物を保管する場所を決めます。
この成果物は、ローカルまたはリモートのファイル・システムからインポートできます。
- カスタム・フィルターのインストール先となるプロキシー・サーバーの名前を把握しておく必要があります。
- このプロキシー・サーバーの制御に使用する管理コンソールがまだ始動していない場合には、始動する必要があります。
このタスクについて
フィルターを使用すると、標準的な製品設定で通常提供される制御のほかに、オプションの 2 次制御を行うことができます。
例えば、アプリケーションでロギング・フィルター・メカニズムを使用して、特定のメッセージ・キーを持つすべてイベントを抑止することができます。
手順
- カスタム・フィルターを作成します。
- com.ibm.wsspi.proxy.filter.http.HttpDefaultFilter を拡張するクラスを作成します。
- abstract doFilter メソッドをオーバーライドして、任意で、init メソッドおよび destroy メソッドをオーバーライドします。init メソッドおよび destroy メソッドをオーバーライドする場合は、これらのメソッドの super バージョンを呼び出して、フィルターのライフ・サイクル機能を保存する必要があります。
- 新規 doFilter メソッドを作成します。このメソッドは、HttpProxyServiceContext インターフェースを使用します。
この新規 doFilter メソッドは、以下を実行するように作成することができます。
- 要求に関連付けられた成果物、または応答自体、応答コード、またはヘッダーなどの応答に関連付けられた成果物を変更する。
- 要求および応答の両方に関連付けられた成果物を変更する。
- 要求または応答のいずれかの情報を取得する。
- 要求および応答の両方の情報を取得する。
- プロキシー・サーバー・フィルターの管理対象 bean (MBean) である proxyFilterMbean を使用して、フィルターに正しい順序を指定します。
proxyFilterMbean = AdminControl.queryNames('type=ProxyServerFilterBean,*')
AdminControl.invoke(proxyFilterMbean, 'viewAllFilters')
プロキシー・サーバーのすべてのフィルターが処理される順序が表示されます。
- フィルターの記述子ファイル 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>
- フィルター用にコンパイルされた .class ファイルおよびフィルター記述子を JAR ファイルに組み込みます。
- カスタム・フィルターを含む成果物 (JAR ファイル) をインポートします。
- 管理コンソールで、をクリックします。
- 「ローカル・ファイル・システム」または「リモート・ファイル・システム」を選択して、JAR ファイルが置かれている場所を指定します。
- JAR ファイルの完全修飾名を指定します。
JAR ファイルの完全修飾名には、ファイルが置かれているディレクトリーのパスとファイル名が含まれます。
JAR ファイルの完全修飾名が分からない場合は、参照機能を使用してファイルを見つけることができます。
- この成果物を含むビジネス・レベル・アプリケーション (BLA) を作成します。
- 管理コンソールで、の順にクリックします。
- 「名前」フィールドで、作成する新規アプリケーションの名前を指定します。
また、「説明」フィールドにアプリケーションの説明を指定することもできます。
- 「適用」をクリックします。
- 成果物から BLA 構成単位 (CU) を作成します。
- 「デプロイ済みアセット (Deployed assets)」テーブルで、「追加」>「アセットの追加 (Add asset)」をクリックします。
- 最初のステップでインポートした成果物の名前を選択して、「継続」をクリックします。
- 必要に応じて構成単位設定を変更し、「ターゲットの変更 (Modify target)」をクリックします。
- 使用可能なデプロイメント・ターゲットのリストから、この CU をデプロイするプロキシー・サーバーを選択し、「OK」をクリックします。
「OK」をクリックすると、製品は、選択したプロキシー・サーバーに構成単位をマップします。
- この構成単位に関連するリレーションシップ・オプションを指定します。
- 「終了」をクリックします。
製品が CU を正常に追加したことを確認するために、「application_name」をクリックします。
製品により、CU が正常に追加された場合は、CU の名前がこの BLA のデプロイ済みアセットのリストに表示されます。
- プロキシー・サーバーを始動します。
- フィルターを含む BLA を開始します。
タスクの結果
これで、フィルターがプロキシー・サーバー上で実行されるようになります。
次のタスク
proxyFilterMbean プロキシー・サーバー・フィルター MBean を使用して、フィルターがプロキシー・サーバーにインストールされていること、および、そのフィルターが、プロキシー・サーバーにデプロイされている他のフィルターに対して正しい順序で処理されることを確認します。
このフィルターが処理される順序を変更する必要がある場合には、proxyFilterMbean MBean に対して modifyOrdinal コマンドを実行します。