public interface ContainerRequestFilter
デフォルトでは、つまり name binding
がフィルター実装クラスに適用されていない場合、フィルターインスタンスはグローバルに適用されますが、JAX-RS ランタイムによって受信リクエストが特定のリソースに一致した後でのみ適用されます。フィルターに @NameBinding
アノテーションが適用されている場合、フィルターは一致後のリクエスト拡張ポイントでも実行されますが、一致した resource or sub-resource method
が同じ名前バインディングアノテーションにバインドされている場合に限ります。
ケースでは、フィルターは、任意のリクエストマッチングが JAX-RS ランタイムによって実行される前に、フィルターは @PreMatching
アノテーションを付けなければならない、すなわち、 プレマッチ拡張ポイントに適用されるべきです。
一致前のリクエストフィルターを使用して、JAX-RS マッチングアルゴリズムへの入力を更新します。たとえば、HTTP メソッド、Accept ヘッダー、キャッシュされたレスポンスを返すなどです。それ以外の場合は、 一致後のリクエスト拡張ポイントで呼び出されるリクエストフィルターを使用します。(リソースメソッドのマッチングが成功した後)をお勧めします。
このインターフェースを実装するフィルターは、JAX-RS ランタイムによって検出されるように @Provider
でアノテーションを付ける必要があります。コンテナーリクエストフィルターインスタンスも検出され、dynamically
が特定のリソースメソッドにバインドされる場合があります。
PreMatching
, ContainerResponseFilter
修飾子と型 | メソッドと説明 |
---|---|
void | filter(ContainerRequestContext requestContext) リクエストがリソースにディスパッチされる前に呼び出される Filter メソッド。 |
void filter(ContainerRequestContext requestContext) throws IOExceptionSE
フィルターチェーン内のフィルターは、jakarta.annotation.Priority
クラスレベルのアノテーション値に従って順序付けられます。リクエストフィルターが ContainerRequestContext.abortWith(jakarta.ws.rs.core.Response)
メソッドを呼び出すことによってレスポンスを生成する場合、(事前一致またはリアクティブ一致)リクエストフィルターチェーンの実行が停止され、レスポンスが対応するレスポンスフィルターチェーン(事前一致またはリアクティブのいずれか)に渡されます。一致)。例: 事前一致キャッシュフィルターは、この方法でレスポンスを生成する可能性があります。これにより、一致後リクエストフィルターと一致後レスポンスフィルターが効果的にスキップされます。ただし、この方法で生成されたレスポンスは、事前一致レスポンスフィルターチェーンによって引き続き処理されることに注意してください。
requestContext
- リクエストコンテキスト。IOExceptionSE
- I/O 例外が発生した場合。PreMatching
Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.