2016-10-11 21 views
1

Apache CXF 3.0.2を使用して、アンマーシャリング時にネームスペースの問題を引き起こしているサービスを公開しています。すべての名前空間宣言がsoapenvelopeレベルで行われるとき、私はメッセージをアンマーシャリングしようとすると、それらは剥ぎ取られているか失われているように見えます。例えば、以下は無効として、XML表示されるでしょう:Apache CXFを使用したWebサービスでのSOAPネームスペースの問題

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:v1="http://foo.com/v1" 
xmlns:v2="http://bar.com/v2" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Body > 
     <v1:foo> 
      <v2:bar> 
     </v1:foo> 
    </soapenv:Body> 
</soapenv:Envelope> 

をしかし、私はするSOAPBody以下にダウン宣言を移動した場合、XMLは細かい検証:私はインターセプタを書き込もうとしてきた

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Body xmlns:v2="http://bar.com/v2" xmlns:v1="http://foo.com/v1"> 
     <v1:foo> 
      <v2:bar> 
     </v1:foo> 
    </soapenv:Body> 
</soapenv:Envelope> 

受信したリクエストを操作し、私が気にする名前空間宣言をヘッダからBodyタグに移動/コピーするが、このように受信メッセージを操作することはできないようである。誰にも示唆はありますか?

答えて

0

を使用しているため、AbstractSoapInterceptorをご覧ください。 handleMessage()を無効にすると、SOAPMessageにアクセスできるようになり、操作することができます。

Apache CFX Interceptors

関連する問題