私はspringとcxfを使用してJavaレストWebサービスを持っていますが、私のWS層からGrails/Groovyフロントエンドにエラーメッセージを伝えようとしています。私のフロントエンドは、Webサービスのクライアントスプリングを参照してWebサービスを呼び出します。Cxfマッパーまたはインターセプタが元のエラーメッセージにアクセスできない
私は、呼び出される例外マッパーを持っています、そして、REST要求をするとき、私はそこにエラーメッセージを取得しますが、プロキシを使用すると仮定した私のフロントエンドを使用するとき、エラーメッセージは利用できません。
私はまた、呼び出されるインターセプタを使用しようとしましたが、 message.getContent(Exception.class)を呼び出すと、 がnullを返します。
デバッガを使用して例外をトレースすると、ServiceInvokerInterceptorが呼び出されたときにメッセージが失われる可能性があります。
私はこれをcxf 2.4で動作させましたが、3.0にアップグレードした時点で機能が削除されていましたが、今戻してみると、何か不足しているのか、cxfが変更されたのか分かりません。
私はクライアントに正しく行うことができる唯一の事は、 ResponseExceptionMapperをトリガーすることですが、私は応答objetから元の例外を取得する方法がありません。
ここには、フロントエンドからの典型的なスタックトレースがあります。
HTTP 500 Internal Server Error. Stacktrace follows:
Message: HTTP 500 Internal Server Error
Line | Method
->> 14 | fromResponse in com.company.common.web.RestResponseExceptionMapper
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 9 | fromResponse in ''
| 302 | checkResponse . . . in org.apache.cxf.jaxrs.client.ClientProxyImpl
| 725 | handleResponse in ''
| 683 | doChainedInvocation in ''
| 224 | invoke in ''
私はこの同じ問題に関連する3つの他の質問が書かれているし、私はこれを理解しようとしている私の髪を引っ張ってきました。
だサーバーのExceptionMapperのコードとサービスを呼び出して、あなたのクライアントの作品を投稿してください。クライアント側でResponseExceptionMapperを使用していますか? – pedrofb