リソースの例外およびエラーに対する例外マッパーの定義
Java™ API for RESTful Web Services (JAX-RS) アプリケーションで例外およびエラーが発生する場合があります。 デフォルトの動作では、JavaServer Pages (JSP) エラー・ページなどのアプリケーション・コンテナーの例外処理機能が使用されます。しかし、エラー処理をカスタマイズすることで、例外またはエラーが発生した場合に特定の応答を返すようにすることができます。
このタスクについて
JAX-RS リソース・メソッドは、他の Java メソッドと同様に、チェック例外とチェックなし例外をスローすることができます。デフォルトでは、チェックなしの実行時例外またはエラーは、コンテナーで再度発生します。チェック例外は、Web コンテナーで実行されているリソース用に、ServletException にラップされます。そのため、開発者は JSP エラー・ページなどのエラー処理機能を使用して、JAX-RS アプリケーションからスローされた例外を処理することができます。
JAX-RS には、例外 javax.ws.rs.WebApplicationException が導入されました。 開発者は、WebApplicationException の作成時に、特定のエラー・クラス名か、または javax.ws.rs.core.Response オブジェクトを指定することができます。WebApplicationException がスローされると、状況クラス名または応答オブジェクトとして例外に組み込まれた情報が、応答のシリアライズに使用されます。
例外 WebApplicationException をコードでスローできず、なおかつ Web コンテナー内のエラー処理機能を使用できない場合で、それでもカスタムのエラー応答を使用したい場合は、カスタマイズした JAX-RS javax.ws.rs.ext.ExceptionMapper クラスを作成して HTTP エラー応答に例外をマップすることができます。
以下の手順は、カスタムの ExceptionMapper クラスを作成する方法を示しています。
手順
タスクの結果
JAX-RS Web アプリケーションで発生する例外を処理するための、カスタムの ExceptionMapper を作成しました。