JAX-RS アプリケーション用のユーザー・ハンドラーの実装
ハンドラー・チェーン動作をカスタマイズし、固有機能をハンドラーに追加するために、ユーザー・ハンドラーを開発することができます。Java™ API for RESTful Web Services (JAX-RS) アプリケーションのサーバー・サイドでユーザー・ハンドラーを実装すると、要求と応答の処理を強化できます。
このタスクについて
カスタム・サーバー・サイドのユーザー・ハンドラーは、要求ハンドラー・チェーン、応答ハンドラー・チェーン、およびエラー・ハンドラー・チェーンに追加できます。すべてのクライアント要求のロギングなどの追加処理が必要な場合は、ロギング機能を実装する 1 つの方法としてユーザー・ハンドラーを追加できます。
ハンドラーは一般的に、MessageContext インスタンスを受け取って現行の要求情報にアクセスして操作し、HandlerChain インスタンスを受け取ってチェーンを進みます。ハンドラー・チェーン内で制御を 1 つのハンドラーから別のハンドラーに渡すために、ハンドラーは HandlerChain インスタンスの doChain() メソッドを呼び出す役割を果たします。ハンドラーは doChain() メソッドを複数回呼び出せるため、同じ要求に対してハンドラーが 2 回以上呼び出される可能性があることを考慮する必要があります。 ハンドラーに関連するすべてのインターフェースは org.apache.wink.server.handlers パッケージにあります。
ハンドラーは MessageContext インターフェースを使用して、現行の要求情報にアクセスし、操作します。このインターフェースを使用すると、ハンドラーはメッセージ・コンテキストの属性を設定することでメッセージの状態を維持できます。またこのインターフェースを使用すると、情報をチェーン上の他のハンドラーに渡すこともできます。
要求ハンドラー・チェーンには要求を JAX-RS 仕様に従って処理する役割があり、要求の受け入れ、呼び出すリソース・メソッドの検索、要求エンティティーのデシリアライズ、および最終的なリソース・メソッドの呼び出しを実行します。要求ハンドラーは、org.apache.wink.server.handlers.RequestHandler インターフェースを実装するクラスです。
応答ハンドラー・チェーンの役割は、リソース・メソッドまたはサブリソース・メソッドの呼び出しによって戻されたオブジェクトを JAX-RS 仕様に従って処理することです。応答状況コードの判断、応答メディア・タイプの選択、および応答エンティティーのシリアライズを実行します。応答ハンドラーは、org.apache.wink.server.handlers.ResponseHandler インターフェースを実装するクラスです。
ユーザー・ハンドラー・クラスは、org.apache.wink.server.handlers.RequestHandler インターフェースまたは org.apache.wink.server.handlers.ResponseHandler インターフェースを実装する必要があります。要求ハンドラーまたは応答ハンドラーが戻されるように org.apache.wink.server.handlers.HandlersFactory インターフェースを拡張するクラスを作成する必要があります。最後に、HandlersFactory クラス名を含むプロパティー・ファイルの場所を web.xml ファイルの初期化パラメーターとして指定することで、そのプロパティー・ファイルがサーブレットまたはフィルターによって確実に読み取られるようにする必要があります。
手順
タスクの結果
ユーザー・ハンドラーが、JAX-RS アプリケーションのサーバー・サイドにあるハンドラー・チェーンに追加されたため、これらのカスタム・ハンドラーがすべての要求プロセスまたは応答プロセスで呼び出されるようになりました。