2012-01-11 7 views
1

内のqnameを再宣言私はこの形式のSOAPリクエストを持っている:SOAPボディ

<soapenv:Envelope 
     xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
     xmlns:myqname="http://example.com/hello" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <myqname:MyRequest xmlns:myqname="http://example.com/hello"> 
     ... 
     </myqname:MyRequest> 
    </soapenv:Body> 
</soapenv:Envelope> 

私はSOAPUIを頼む場合は「書式のXML」この要求、 それはmyqnameの2番目の宣言を削除し、私は取得へこの:

<soapenv:Envelope 
     xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
     xmlns:myqname="http://example.com/hello" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <myqname:MyRequest> 
     ... 
     </myqname:MyRequest> 
    </soapenv:Body> 
</soapenv:Envelope> 

元の要求が正常に動作し、 が、アプリケーション・サーバーは、このエラーで修正要求に失敗します。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <soap:Fault> 
     <faultcode>soap:Client</faultcode> 
     <faultstring>Unmarshalling Error: UndeclaredPrefix: Cannot resolve 'myqname:MyRequest' as a QName: the prefix 'myqname' is not declared.</faultstring> 
     </soap:Fault> 
    </soap:Body> 
</soap:Envelope> 

Webサービス仕様によると、 は、qnameがsoapenv:Bodyノード内で再宣言されることが必須ですか? SOAPUIのバグか、Application Serverのバグですか?または私の部分からの誤解? SOAPUI 4.0.1

、WebLogic Serverバージョン:10.3.2.0

編集:UPS、でもWebLogicアプリケーション・サーバーを使用している場合、私はCXF Webサービスフレームワークを使用していました。私はそこに問題を投稿した。 issues.apache.org/jira/browse/CXF-4026

ので:SOAPUI 4.0.1、CXF 2.5.0

答えて

2

私はSOAPエンベロープを取り除きコードのバグとしてそれを記述すると思います。ネームスペースのコンテキストを保持する必要がありますが、そうしていないため、XMLが破られています。 DOM要素レベルで操作するのではなく、部分処理を行うことでストリッピングを行っているためです(DOM処理を使用してストリッピングを行うかどうかは問題の横にあるかどうかにかかわらず)。私は、コンポーネントが原因でこれらの事を入れ子にすることができる方法を剥離することをやっているどのわからないんだけど、私はそれは、WebLogicの疑い...


[EDIT]:私はSOAP specificationをチェックしましたし、そうでありません身体の内容は、名前空間でなければならないと言われていますが、使用される名前空間を直接宣言しなければならないと言います(5.3.1を参照)。そのため、通常のXML名前空間規則が適用されます。つまり、SOAPメッセージ全体が単なるXML文書です。これは、WebLogicの動作をバグにします。

+0

答えに感謝します。しかし、これは推測ですが、私はそれに同意しますが、私は決定的な答えが必要です。 –

+0

@David:決定的な答えは、SOAP仕様では何も言わないということです。通常のXMLルールが適用されます。 WebLogicのバグ。 –

+0

私はそう言っていると思うけど、信じるのはちょっと難しいと思うが、私には同意するだろう... :) 質問をweblogicフォーラムに投稿した: https://forums.oracle.com/forums/ thread.jspa?threadID = 2331952&tstart = 0 –

関連する問題