2017-02-13 9 views
0

CXF WebサービスでWS要求を取得します。は、私は(<a href="https://github.com/apache/servicemix/tree/master/examples/cxf/cxf-jaxws-blueprint" rel="nofollow noreferrer">https://github.com/apache/servicemix/tree/master/examples/cxf/cxf-jaxws-blueprint</a> ServiceMixの例のデモに基づいて)CXFのOSGi Webサービスを持って

私の質問は、WSメソッド内でリクエストを取得し、文字列XML形式で解析する方法です。

これは、インターセプタ内でロギングが可能であることがわかりましたが、私のメソッド内のWS-Requestにも必要です。

+0

あなたがプレーンxmlを望むなら、なぜjax wsを使うのですか?何のためにxmlが必要ですか? –

+0

私は欲しいですか?私のservicemixログに見られるリクエストの実際のペイロード。 「何のために必要なの?」という質問に。将来の処理のためにデータベースにペイロードを保存します。 – Stephan

+0

私はここを参照してください(http://stackoverflow.com/questions/11038313/how-to-get-incoming-outgoing-soap-xml-in-a-simpleway-using-apache-cxf)上記のようにインターセプタからのメッセージが、私は私のWSメソッドのペイロードが必要です。 – Stephan

答えて

1

データベースにリクエストを保存するには、new CXF message loggingを拡張することをお勧めします。

データベースに書き込むカスタムLogEventSenderを実装することができます。

+0

提案していただきありがとうございますが、これは実際の質問には答えません。どのように、または私は私のwebmethod要求ペイロード内に入ることができる場合。 – Stephan

0

一度メソッドが呼び出されると、DBにデータを保存する必要があるのと同様の要件がありました。私はThreadLocalLoggingInInterceptorLoggingOutInterceptorを使っていました。例えば、LoggingInInterceptorでは、メッセージをThreadContextに設定し、WebサービスメソッドではLoggingContext.getMessage()を使用し、LoggingOutInterceptorではメッセージを削除するために使用しました(注:ここで注意する必要があるのは、スレッドコンテキストからメッセージを明示的に削除する必要があります。あなたはメモリリークで終わるだろう、と、クライアント側のコードインターセプタの包み逆転します。

public class LoggingContext { 

    private static ThreadLocal<String> message; 

    public static Optional<String> getMessage() { 
     return Optional.ofNullable(message.get()); 
    } 

    public static void setMessage(final String message) { 
     LoggingContext.message = new ThreadLocal<>(); 
     LoggingContext.message.set(message); 
    } 

} 
0

ないこの質問への答えが、私は最終的にはJAXBを使用して、私のタスクを実行するために達成し、いくつかの操作を行いますそこに。

関連する問題

 関連する問題