Menu Close

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

概要

コンテキスト情報には、リソースの URI、HTTP ヘッダー、およびその他のインジェクションアノテーションでは容易に使用できないその他の詳細に関する詳細情報が含まれます。Apache CXF は、可能なすべてのコンテキスト情報を単一のオブジェクトにまとめる特別なクラスを提供します。

52.1. コンテキストの概要

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

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

コンテキストの型

表52.1「コンテキスト型」 は、インジェクト可能なコンテキスト情報の型と、それらをサポートするオブジェクトを示しています。

表52.1 コンテキスト型

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

UriInfo

完全な要求 URI

HttpHeaders

HTTP メッセージヘッダー

Request

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

SecurityContext

使用中の認証スキーム、リクエストチャネルがセキュアであるかどうか、およびユーザープリンシパルなど、リクエスト元のセキュリティーに関する情報。

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

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

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

スコープ

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

コンテキストの追加

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