2011-12-06 16 views
0

Webサービスクライアントを作成するためのコンポーネントを提供したいと思います。これまでの私のアプローチは、JaxWsProxyFactoryBeanを拡張し、createメソッドをオーバーライドし、タイムアウトのようなパラメータにsetterとgetterを提供することでした。JaxWsProxyFactoryBeanによって作成されたプロキシでサービスコールを記録する方法

@Override 
public synchronized Object create() { 

    //do some stuff here 
    Object result = super.create(); 
    //here too 

    return result; 
} 

ログに記録されたプロキシを呼び出すには適切な方法はありますか?私はgetInInterceptors().add(new MyInterceptor());Interceptorを設定しようとしましたが、JaxWsProxyFactoryBeanだけがPhaseInterceptorを望んでいます。しかし、私はそのインターセプタ上のすべての属性をどのように設定すべきか、そしてこれが正しい方法であれば分かりません。

答えて

0

解決策は見つかりましたが、100%完全ではありません。

私はLogicalHandlerインターフェイスを実装しました。これをFactoryBeanに設定し、メッセージがアウトバウンドまたはインバウンドの場合はハンドラをチェックインします。

public class LoggingHandler implements LogicalHandler<LogicalMessageContext> 

方法:

public boolean handleMessage(LogicalMessageContext context) { 
    Boolean outboundProperty = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY); 

    if (outboundProperty.booleanValue()) { 
     //log here 
    } else { 
     //or here 
    } 
    return true; 
} 

これは私が応答せずにメソッドを呼び出すsituatinを除いて、正常に動作します。次に、応答がある場合は2回ではなく1回だけ呼び出す方法です。

関連する問題