2016-07-05 5 views
0

Webサービスを消費するためにjaws:clientを使用しています。私たちはinFaultInterceptorを持って、それ以降の処理のために石鹸の欠陥を捕捉します。しかし、このinFaultInterceptorは404やConnectExceptionのようなhttpエラーに対して呼び出されていません。私たちは顎に対してクライアントを設定しました:クライアント。これらのHTTP例外をキャプチャするインターセプタを記述できますか?それらをキャプチャするための良い方法はありますか?私たちが望むのは、そのような例外/エラーが発生したときに制御を取り戻すことだけです。 注:いくつかの制限のために、Webサービスコードでそれらを捕捉することはできません。http例外のCxfインターセプタ

答えて

0

FaultListenerをCXF Busに追加できます。リスナーはhttp例外をキャプチャして、メソッドを呼び出す前にコードを実行できるようにします。

ClientProxy.getClient(jaxWSClientProxy).getBus().getProperties().put("org.apache.cxf.logging.FaultListener",new CxfFaultListenerImpl()); 

public class CxfFaultListenerImpl implements FaultListener{ 
    public boolean faultOccurred(final Exception exception,final String description,final Message message) { 

     //return false to avoid standard CXF logging of exception 
     return false; 
    } 
} 
+0

優れています。私のために働く。もう1つの質問。リスナーインターセプタとWebサービスコードの間で通信を行いたいと考えています。私たちはcxf Exchangeオブジェクトで試しました。しかし、Webサービスコードのリスナーやインターセプタによってデータセットを取得することはできませんでした。それを行うための他の方法は? –

+0

私は 'FaultListener'でカスタム例外を作成し、交換された' Message'コンテンツを 'message.setContent(Exception.class、new Exception(" custom error "));に置き換えてテストしました;メソッド呼び出しはあなたのカスタム例外を受け取り、 'try-catch'で捕まえることができます。しかし、私は他の情報を含むことはできませんでした。 JAX-RSクライアントでは、完全な 'Response'オブジェクトを置き換えることはできますが、JAX-WSを使ってJAX-RSを実行する方法はわかりません。私はそれが可能だと思います – pedrofb

関連する問題