2011-12-22 19 views
3

したがって、私はJerseyでRESTサービスをセットアップしています。Jersey/JAXB XML検証エラーのカスタムエラーメッセージ

私のPOJOは単純に私は私のRESTサービスへのPOSTリクエストを送信し、すべてが正常に動作し@XmlRootElement

として注釈されています。

1不正なXMLをサービスに送信します。コンテナのデフォルトの400 Bad Requestページを返します。 Glassfish 3を使用して私は正確に覚えていないが、私は自分のWebアプリケーションを自分の400の悪い要求にマップするように変更するか、その特定の主題に関する文書をどこで探すことができますか?

2私は有効なXMLを送信しますが、予想されるフィールドの1つに空の値を入れます。私のサービスは何かをしようとし、永続性の例外をスローします。私はコンテナのデフォルトの500 Internal Server Errorページを返し、スローされた例外をリストします。私は自分のカスタムエラーページにもマップすることができると思いますが、例外メッセージを表示するだけではありません。これはセキュリティの問題と考えられています。

私は基本的に自分のビジネスロジックに基づいて自分自身のフィールドを検証し、 "Field1 is invalid"のようなエラーメッセージをクライアントに返したいと思います。クライアントはエラーコードを解析し、どのフィールドが間違っていたかを知ることができるはずです。

サービスに複数のタイプの不正なリクエストエラーがある場合はどうすればよいですか?たとえば、フィールドはINT値が1-3の間であると予想できますが、特定のビジネス要求では2の値が必要で、3が送信されます。

タイプ/値の検証では、単に「無効なフィールド名はここです」とします。しかし、特定のビジネスロジックでは、「無効なアカウント」や「アカウントが失効しました」や「住所が一致しません」などと表示されます。

また、

基本的に私は古い "xml"タイプのサービスを受けて、概念証明のためにRESTスタイルに変換し、それを標準にしています。つまり、結果的にXMLをPOSTし、XMLを読み込み、ビジネスロジックを呼び出し、ロジックが適切なコードをXMLレスポンスに返します。 HTTP 200 OK、ビジネスロジックコードがXMLレスポンスで返されるため、クライアントが500エラーを受け取る唯一の時間は、サービスがXMLレスポンスを生成できないハードエラーが発生した場合です。しかし、XMLレスポンスでは、私自身のエラーコードでこれを示しています。

私はSOAPをより多くの "メッセージ"指向のサービスに使用することを提案しましたが、まだ重いと思っています。サービスはありますが、ほとんどのRESTは必要ありませんが、

答えて

3

HTTP re ExceptionMappersを使用してsponsesは - 参照: http://jersey.java.net/nonav/documentation/1.11/jax-rs.html#d4e433 http://jsr311.java.net/nonav/releases/1.1/javax/ws/rs/ext/ExceptionMapper.html

あなたがリクエストもリソースメソッドに到達する前に検証を行いたい場合は、あなたがそのためにContainerRequestFilterを書いて試してみて、パラメータとしての対応を取るWebApplicationExceptionを投げることができる - 自動的ジャージーその初期化されたレスポンスに対する例外をマップします。

+0

ありがとう、私はそれを試してみましょう。しかし、もう少し質問があります。私は主な質問を更新しました。 – user432024

関連する問題