JAX-RS 1.1 Web アプリケーションのデプロイ
Java™ API for RESTful Web Services (JAX-RS) Web アプリケーションをアセンブルしたら、Web アプリケーション・アーカイブ (WAR) パッケージまたはエンタープライズ・アーカイブ (EAR) パッケージを、アプリケーション・サーバー上にデプロイできます。
始める前に
JAX-RS Web アプリケーションをデプロイするには、RESTful サービス用に構成され、使用可能になっている WAR パッケージまたは EAR パッケージが必要です。
このタスクについて
すべての Web アプリケーションには、Web アプリケーションを正常にデプロイするためのコンテキスト・ルートが必要です。各 Web モジュールのコンテキスト・ルートは、アプリケーション・アセンブリーまたはアプリケーション・デプロイメントの実行中にアプリケーション・デプロイメント記述子で定義されます。コンテキスト・ルートは、WAR ファイルからの定義済みのサーブレット・マッピングと結合され、ユーザーがサーブレットにアクセスする際に入力する完全な URL が作成されます。デプロイされた Web アプリケーションそれぞれのコンテキスト・ルートは、サーバー上で固有である必要があります。コンテキスト・ルートは 空にしておくこともできます。例えば、Web アプリケーションで sample/application/ というコンテキスト・ルートを使用する場合、この Web アプリケーションの要求 URL は http://<hostname>:<port>/sample/application/ で始まります。
サーブレットの URL パターンは、Web アプリケーションのコンテキスト・ルートに追加されます。例えば、コンテキスト・ルートが sample/application/ でサーブレット URL マッピングが rest/api/* である場合、JAX-RS Web アプリケーションのベース URI は http://<hostname>:<port>/sample/application/rest/api となります。
手順
タスクの結果
JAX-RS Web アプリケーションがデプロイされ、業務に使用する準備ができました。
ブラウザーに URL (Uniform Resource Locator) を入力してアプリケーションにアクセスできる場合、あるいは、以下のリンクによってアプリケーションにアクセスできる場合、Java API for RESTful Web Services (JAX-RS) Web アプリケーションのデプロイメントは正常に行われています。アプリケーションにアクセスできない場合は、 以下のステップに従って、デプロイメント中に発生する可能性がある共通のエラーを除去してください。

以下のヒントを使用して、JAX-RS Web アプリケーションのデプロイメント中に発生した共通エラーを解決します。
- サーバー応答で「HTTP 404 Not Found」エラー・メッセージがクライアントに送り返される。
- この問題を解決するには、次のアクションを実行します。
- ルート・リソース・クラスに @javax.ws.rs.Path アノテーションが付けられていること、およびアノテーションの値が正しいことを確認します。@Path アノテーションが付けられていないルート・リソース・クラスは、JAX-RS ランタイムに登録されません。詳しくは、RESTful アプリケーションでのリソースの URI パターンの定義の項を参照してください。
- ルート・リソース・クラスが、javax.ws.rs.core.Application クラスのサブクラスの getClasses() メソッドから戻された一連のクラスに 追加されていることを確認してください。javax.ws.rs.core.Application クラスのサブクラスに登録されていないクラスは、JAX-RS ランタイム環境では 認識されません。詳しくは、RESTful アプリケーションでのリソースの URI パターンの定義の項を参照してください。
- web.xml 構成が、予期される URL パターンを含んでおり正しいことを確認します。詳しくは、web.xml で JAX-RS サーブレットおよびフィルターの情報を参照してください。
- 使用中の URL が正しく、コンテキスト・ルートが含まれていることを確認します。サーブレットを使用している場合は、サーブレット URL パターンが最終 URL の一部になります。ご使用の Web アプリケーションでは、フィルターの使用が適している場合があります。詳しくは、web.xml ファイルで JAX-RS サーブレットおよびフィルターの情報を参照してください。
- サーバー応答で「HTTP 405 Method Not Allowed」のエラー・メッセージがクライアントに送り返される。
- 要求 URL のサーブレット URI がリソース・メソッドのパス値に一致するが、
送信された HTTP メソッドがメソッド・アノテーションに一致しない場合、
HTTP 状況コード 405 の Method Not Allowed が返されます。
次のコード例では、 要求 URL が sayhello で終わりますが、 GET ではなく POST が要求に含まれるため、405 が戻されます。
@javax.ws.rs.Path("helloworld") public class SampleResource { ... @javax.ws.rs.Path("sayhello") @javax.ws.rs.GET public String getHello() { ...
この問題を解決するには、次のアクションを実行します。
- 送信された HTTP メソッドが、メソッド・アノテーションに一致することを確認します。
- サーバー応答で「HTTP 406 Not Acceptable」エラー・メッセージがクライアントに自動的に送り返される。
- この問題を解決するには、次のアクションを実行します。
- 着信要求の Accept HTTP 要求ヘッダーが正しいことを確認します。詳しくは、HTTP ヘッダーに基づくコンテンツ・ネゴシエーションの実装の項を 参照してください。
- リソース・メソッドまたはリソース・クラスの @javax.ws.rs.Produces 値が、着信 Accept HTTP 要求ヘッダーと互換性があることを確認します。詳しくは、RESTful アプリケーションのリソースのメディア・タイプの定義の項を参照してください。
- サーバー応答で「HTTP 415 Unsupported Media Type」エラー・メッセージがクライアントに自動的に送り返される。
- この問題を解決するには、次のアクションを実行します。
- 着信要求の Content-Type HTTP 要求ヘッダーが正しいこと、および送信中であることを確認します。詳しくは、RESTful アプリケーションのリソースのメディア・タイプの定義の項を参照してください。
- リソース・メソッドまたはリソース・クラスの @javax.ws.rs.Consumes 値が、着信 Content-Type HTTP 要求ヘッダーと互換性があることを確認します。
- サーバー応答で「HTTP 204 No Content」応答状況がクライアントに自動的に送り返される。
- この問題を解決するには、次のアクションを実行します。
- リソース内にヌル応答があった場合に「204 No Content」応答コードを生成するかどうかを決定します。
既知の問題およびその解決法に関する情報については、IBM サポート・ページを参照してください。
IBM® サポートが提供する資料を利用すれば、 この問題の解決に必要な情報を収集する時間を節約することができます。