Cosminexus V9 アプリケーションサーバ Webサービス開発ガイド
JAX-RSエンジンは,次に示す個所からスローされる例外をここで説明するようにハンドリングします。
WebApplicationExceptionがスローされる場合で,WebApplicationExceptionまたはその親以上の例外に対応する例外マッピングプロバイダがないとき,JAX-RSエンジンは次の表に示すようにWebApplicationExceptionをハンドリングします。
表17-10 WebApplicationExceptionのハンドリング(例外マッピングプロバイダがない場合)
| 項番 | 条件 | ハンドリング結果 | ||
|---|---|---|---|---|
| responseプロパティ | responseプロパティのHTTPステータスコード | HTTPレスポンスのHTTPステータスコード | メッセージID | |
| 1 | 設定されている |
|
WebApplicationExceptionのresponseプロパティが持つ値が使用されます。 | KDJJ30021-I |
| 2 | 設定されている |
|
WebApplicationExceptionのresponseプロパティが持つ値が使用されます。 | KDJJ30022-I |
| 3 | 設定されている |
|
WebApplicationExceptionのresponseプロパティが持つ値が使用されます。 | KDJJ10018-E |
| 4 | 設定されている |
|
WebApplicationExceptionのresponseプロパティが持つ値が使用されます。 | KDJJ10019-E |
| 5 | 設定されていない | − | 500 | KDJJ10018-E |
WebApplicationExceptionを生成し,responseプロパティを設定する例を次に示します。
package com.sample.resources;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
//ルートリソースクラス
@Path("/root")
public class Resource {
//サブリソースメソッド
@Path("/subresourcemethod")
@GET
public String subResourceMethod() {
//ResponseBuilderを使用してResponseインスタンスを生成
ResponseBuilder rb = Response.status(208).
entity("entity for WebApplicationException");
//WebApplicationExceptionへResponseインスタンスを設定
throw new WebApplicationException(rb.build());
}
}
|
この例では,ルートリソースクラスcom.sample.resources.Resourceを含むWebアプリケーション(WARファイル)のコンテキストルートが"resource"で,Webアプリケーションが"example.com"というホストで公開されているとします。その場合,URL"http://example.com/resource/root/subresourcemethod"に対するHTTP GETリクエストは,メソッドsubResourceMethod()にディスパッチされます。また,HTTPレスポンスは,WebApplicationExceptionのresponseプロパティから変換されます。
WebApplicationException以外の例外がスローされる場合で,その例外またはその親以上の例外に対応する例外マッピングプロバイダがないとき,JAX-RSエンジンは次の表に示すようにその例外をハンドリングします。
表17-11 その他の例外(例外マッピングプロバイダがない場合)
| 項番 | 条件 | ハンドリングの結果 | ||
|---|---|---|---|---|
| 例外の種類 | JAX-RSエンジンの動作 | HTTPレスポンスのHTTPステータスコード | メッセージID | |
| 1 | ランタイム例外 | そのランタイム例外をスローし直します。 | 500 | KDJJ10010-E, KDJJ10039-E |
| 2 | 上記以外 | RuntimeExceptionでその例外をラップしてスローします | 500 | KDJJ10017-E, KDJJ10039-E |
スローされる例外,またはその親以上の例外に対応する例外マッピングプロバイダがある場合は,例外マッピングプロバイダの動作に依存します。なお,スローされる例外とその親以上の例外に対応する例外マッピングプロバイダが複数存在する場合は,その例外に最も近い例外(スローされた例外を含む)を処理できる例外マッピングプロバイダが動作します。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.