第52章 コンテキスト情報の取得と使用

概要

コンテキスト情報には、リソースの URI、HTTP ヘッダー、およびその他のインジェクションアノテーションを使用して読み取りできないその他の情報が含まれます。Apache CXF は、考えられるすべてのコンテキスト情報を 1 つのオブジェクトに統合する特別なクラスを提供します。

52.1. コンテキストの概要

コンテキストのアノテーション

javax.ws.rs.core.Context アノテーションを使用して、コンテキスト情報がフィールドまたはリソースメソッドパラメーターに注入されるよう指定します。コンテキスト型のいずれかのフィールドまたはパラメーターにアノテーションを付けると、適切なコンテキスト情報をアノテーション付きフィールドまたはパラメーターに注入するように、ランタイムに指示が出されます。

コンテキストのタイプ

表52.1「コンテキストタイプ」 は、挿入可能なコンテキスト情報のタイプと、その情報をサポートするオブジェクトを一覧表示します。

表52.1 コンテキストタイプ

オブジェクトコンテキスト情報

UriInfo

完全リクエスト URI

HttpHeaders

HTTP メッセージヘッダー

Request

最適な表現バリアントを判別するため、または一連の前提条件が設定されているかどうかを判別するために使用できる情報

SecurityContext

使用中の認証スキーム、要求チャネルが安全であるかどうか、およびユーザー原則など、要求者のセキュリティーに関する情報

コンテキスト情報を使用できる場所

コンテキスト情報は、JAX-RS アプリケーションの以下の部分で利用できます。

  • リソースクラス
  • サブリソースメソッド
  • エンティティープロバイダー
  • 例外マッパー

スコープ

@Context アノテーションを使用して注入されたすべてのコンテキスト情報は現在のリクエストに固有です。これは、エンティティープロバイダーや例外マッパーを含むすべてのケースに該当します。

コンテキストの追加

JAX-RS フレームワークにより、開発者はコンテキストメカニズムを使用して注入できる情報タイプを拡張できます。Context<T> オブジェクトを実装し、ランタイムに登録して、カスタムコンテキストを追加します。