JAX-RS コンテキスト・オブジェクトを使用した要求に関する詳細情報の取得

Java API for RESTful Web Services (JAX-RS) は、異なるタイプのコンテキストをリソース・クラスおよびプロバイダーに提供します。コンテキスト・オブジェクトを使用すると、要求の一部として送信される HTTP ヘッダーのディスカバーなどの要求情報にアクセスできます。コンテキスト・オブジェクトはまた、要求の評価および適切な応答を構築する便利な方法を提供します。

このタスクについて

REST (Representational State Transfer) アプリケーション・リソースは、呼び出し時に一部のアプリケーション・コンテキスト・データの検査が必要になる場合があります。例えば、HTTP GET 照会を処理するリソース・メソッドは、要求で指定された言語で応答を出力できるように Accept-Language HTTP ヘッダーがあるかどうか要求の HTTP ヘッダーを検査することがあります。

JAX-RS は、アプリケーション・リソースの有効範囲内でこのデータを取り出す単純な方法を定義します。適切なオブジェクトをリソース・メソッドのパラメーターまたはリソース・クラス内のフィールドとして @Context アノテーションを宣言すると、必要データがリソースに注入されます。JAX-RS 実装によってパラメーターまたはフィールドにコンテキスト・データが追加され、リソース・メソッドによってすべての必要なコンテキスト・データにアクセスできます。

JAX-RS ランタイム環境によって注入可能な、次のインターフェース・タイプを使用できます。
インターフェース・タイプ 説明
javax.ws.rs.core.UriInfo UriInfo インターフェースは、要求で指定される完全な URI を提供します。このインターフェースは、要求 URI に一致するリソースを検査することもできます。
javax.ws.rs.core.Request Request インターフェースは、POST または GET などの要求に関する情報を提供します。このインターフェースは、要求のエンティティー・タグに基づいて前提条件を評価することもできます。
javax.ws.rs.core.HttpHeaders HttpHeaders インターフェースは、すべての HTTP ヘッダーへの読み取り専用アクセスを提供します。
javax.ws.rs.core.SecurityContext SecurityContext インターフェースは、認証方式やセキュリティー・プリンシパルなどの読み取り専用セキュリティー情報を提供します。
javax.ws.rs.ext.Providers Providers インターフェースによって、ContextResolver、ExceptionMapper、MessageBodyWriter、または MessageBodyReader の実装を取り出すことができます。

これらの JAX-RS インターフェース・タイプに加えて、JAX-RS 仕様に記述されているように、@Context アノテーションを使用して Web コンテナー・タイプ (javax.servlet.http.HttpServletRequest など) を注入することができます。

手順

  1. 開発環境を構成します。
    1. JAX-RS アプリケーションの開発を開始する前に、クラスパスに JAX-RS ライブラリーを追加して開発環境をセットアップする必要があります。
  2. JAX-RS Web アプリケーションのリソースを定義します。
    1. リソースは、RESTful サービスの基本ビルディング・ブロックです。リソースは、静的または動的な更新データを含むことができます。オンライン書店アプリケーションのリソースの例には、書籍、書店からの注文、およびユーザーのコレクションが含まれます。ご使用のアプリケーションのリソースを識別することにより、サービスをさらに便利で開発しやすいものにできます。
  3. JAX-RS アプリケーションを構成します。

    お客様のニーズに応じて、複数の方法で JAX-RS アプリケーションを構成できます。 Java™ Platform, Enterprise Edition (Java EE) 6 の機能を活用するには、アノテーション・スキャン機能を使用します。 アノテーション・スキャンを使用することにより、JAX-RS javax.ws.rs.core.Application サブクラス を省略したり、javax.ws.rs.core.Application サブクラスの定義を最低限にすることができます。 あるいは、IBM® JAX-RS サーブレットおよびフィルターで有効な機能を 使用したい場合は、IBM JAX-RS サーブレットまたはフィルター を指定できます。

    JAX-RS バージョン 1.1 構成メソッドの 1 つを使用して、 アプリケーションで javax.ws.rs.core.Application サブクラスを省略したり、 すべての JAX-RS クラスを検索して使用するように JAX-RS ランタイム環境に通知するために 空のクラス・セットを返す javax.ws.rs.core.Application サブクラスをアプリケーションで 使用したりすることができます。 このメソッドは、アプリケーションの作成時に、関連するすべての JAX-RS クラスを 手動で javax.ws.rs.core.Application サブクラスに追加しなければならない手間を省略したい場合などに使用します。

    特定の IBM JAX-RS サーブレットおよびフィルターを 指定することにより、特定の IBM JAX-RS の動作を 確実に利用することができます。例えば、IBM JAX-RS フィルターは、 同じ URL パターンの JAX-RS リソースと JavaServer Pages (JSP) ファイルを使用する Web アプリケーション を開発する際に役立ちます。

    オプションの web.xml ファイルの使用をサポートする JAX-RS V1.1 構成メソッド がありますが、セキュリティー制約またはロールを指定したい場合や、web.xml ファイルを使用して 使用可能な他の機能を利用したい場合には、web.xml ファイルに情報を指定する必要があります。

    JAX-RS アプリケーションを構成するには、以下の 3 つの方法のうち 1 つを選択します。

    • JAX-RS 1.1 メソッドを 使用して JAX-RS アプリケーションを構成する

      アノテーション・スキャン機能 または JAX-RS 1.1 構成メソッドを使用したい場合に、この方法を使用します。 アノテーション・スキャン機能を使用することにより、アプリケーションの可搬性を向上させたり、 構成コードの量を最小化したり、アプリケーション・コードを変更せずにアプリケーションを 動的に変更したりすることができます。

    • JAX-RS サーブレット用 web.xml ファイルの構成

      動作を変更するためにサーブレット初期設定パラメーターを使用して有効にする機能を指定したい場合、 および IBM JAX-RS サーブレットを確実に取得したい 場合に、この方法を使用します。サーブレットを使用する場合は、ベース URL に付加されるサーブレット・パスを web.xml ファイル内に 定義できます。

    • JAX-RS フィルター用 web.xml ファイルの構成

      さまざまな URL パターンの JSP、その他のサーブレットおよびフィルター、 および JAX-RS リソースがあり、フィルターを使用したい場合に、この方法を使用します。 有効な URL を示すフィルターを定義し、それらの URL でフィルターが起動されるように web.xml ファイルを 構成することができます。

  4. コンテキスト・フィールドおよびパラメーターを追加して要求に関する情報を取得します。 HttpHeaders オブジェクト、UriInfo オブジェクト、Request オブジェクト、または SecurityContext オブジェクトを使用して、要求に関する情報を取得できます。
  5. JAX-RS Web アプリケーションをアセンブルします。
    1. JAX-RS Web アプリケーション用に Java クラス・ファイルを開発し、JAX-RS サーブレットを使用可能するために web.xml ファイルを編集したら、アプリケーションをアセンブルできます。Web アプリケーションを Web アプリケーション・アーカイブ (WAR) パッケージにアセンブルします。必要に応じて、WAR パッケージをエンタープライズ・アーカイブ (EAR) パッケージにアセンブルできます。
  6. JAX-RS Web アプリケーションをデプロイします。
    1. JAX-RS Web アプリケーションをアセンブルしたら、Web アーカイブ (WAR) パッケージまたはエンタープライズ・アーカイブ (EAR) パッケージを、アプリケーション・サーバー上にデプロイする必要があります。

タスクの結果

要求に関する詳細情報を得るためのコンテキスト・オブジェクトを JAX-RS Web アプリケーションに実装できました。


トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_contextobjects
ファイル名:twbs_jaxrs_contextobjects.html