2012-03-13 12 views
2

私たちはcxfバージョン2.5.2を使用しており、cxf jaxrsを使って安らかなWebサービスを公開し、消費しています。JAVA | | CXF | JAX-RS |例外処理

サーバーからクライアントに例外をスローする方法はありますか? ExceptionMapperインタフェース(toResponseメソッド)を実装してカスタム例外マッパーを定義しようとしましたが、cxf jaxrs:server providersリストにBeanを追加しました。

クライアント側:ResponseExceptionMapper(fromResonseメソッド)を実装し、cxf jaxrs:client providersリストにBeanを追加しました。しかし、これは動作しないようです。

例外は、java.lang.Exceptionを拡張するカスタム例外です。 ガットその問題を解決しJAXB-IMPL 2.2.5へ

見つかりhttp://java.net/jira/browse/JAXB-814とアップグレード「IllegalAnnotationExceptionsのStackTraceElementのIllegalAnnotationsException 2つのカウントが引数のないデフォルトコンストラクタを持っていません」。

しかし、最後に、私は(クライアント呼び出し中)、サーバ側で以下の例外を除いて打たれています:

org.apache.cxf.jaxrs.provider.AbstractJAXBProvider : 
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions blueprints.common.util.BlueprintsException does not have a no-arg default constructor" 

とクライアント側で:

JAXBException occurred : 1 counts of IllegalAnnotationExceptions. 
java.lang.ClassCastException: org.apache.cxf.helpers.LoadingByteArrayOutputStream$1 cannot be cast to myExceptionClass:java.lang.ClassCastException" when i typecast Response.getEntity()) tp myExceptionClass in fromResponse (jaxrs provider that implements ResponseExceptionMapper) 

は誰が同様の問題に直面しています? カスタムインターセプタを追加する必要はありますか? cxfドキュメントは、Springの設定を使用した例外処理の例を提供していません。

編集jigarさんのコメントに基づいて: をデフォルトコンストラクタを追加した後、応答エンティティは

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<blueprintsServiceException> 
<stackTrace/> 
<stackTrace/> 
<stackTr‌​ace/> 
<stackTrace/> 
... 
</blueprintsServiceException>` 

含まれていると私はまだ取得するとjava.lang.ClassCastException:

org.apache.cxf.helpers.LoadingByteArrayOutputStream$1 cannot be cast to blueprints.server.exception.BlueprintsServiceException' when i typecast Response.getEntity()) to myExceptionClass in fromResponse 
(jaxrs provider that implements ResponseExceptionMapper) 

おかげで、
Gayathri

答えて

0

デフォルトコンストラクタを指定する必要があります、

デフォルトのコンストラクタを隠すコンストラクタをオーバーロードしている場合があります、ですから、デフォルトコンストラクタに応答のための明示的

+0

感謝を提供する必要があります。デフォルトのコンストラクタを追加した後、応答のあるエンティティに '<?xml version = "1.0" encoding = "UTF-8"のスタンドアロン= "はい"が含まれていますか?> ... getResponse(ResponseExceptionMapperを実装しているjaxrsプロバイダ)のmyExceptionClassにResponse.getEntity()を型変換したときに、blueprints.server.exception.BlueprintsServiceExceptionにキャストすることができません。 – crankparty

+0

ご質問 –

+0

で更新してください。編集された質問。 – crankparty