私は、Spring-WSに基づいて、契約型の最初のWebサービスを開発しています。私はCastorのマーシャリングに頼っています。私は以下の問題にぶつかりました。操作タグ内で名前空間が定義されている場合、SOAPメッセージのCastorの非マーシャリングはどのように処理できますか?
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns="http://www.mycompany.com/MyService/schemas">
<soap:Header/>
<soap:Body>
<doPlaceHoldRequest>
<hold>
<accountInfo>
<accountNumber>123456789</accountNumber>
</accountInfo>
<extended>false</extended>
<afterHours>false</afterHours>
<amountSavings>1.00</amountSavings>
<amountChecking>0.00</amountChecking>
</hold>
</doPlaceHoldRequest>
</soap:Body>
</soap:Envelope>
しかし、.NETとJavaの両方のクライアントがスプリング-WS(によって提供されるの.wsdlから発生する次のような名前空間はエンベロープタグで定義されている「のxmlns」は、場合
要求が受け入れられていますこれはXSDから生成された)、次のようにそれらの要求を形成する:アンマーシャリング例外が生じる
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header/>
<soap:Body>
<doPlaceHoldRequest
xmlns="http://www.mycompany.com/MyService/schemas">
<hold>
<accountInfo>
<accountNumber>123456789</accountNumber>
</accountInfo>
<extended>false</extended>
<afterHours>false</afterHours>
<amountSavings>1.00</amountSavings>
<amountChecking>0.00</amountChecking>
</hold>
</doPlaceHoldRequest>
</soap:Body>
</soap:Envelope>
はキャスターによってスローされます。 Castorにこれらのメッセージを有効と認識させるにはどうすればよいですか?私のWSDL(またはそれを自動生成するために使用したXSD)が間違っていますか?
これまでのところ、私は普通の古いJax-WSに切り替えましたが、それは魅力的なように機能しています。私は再びSpring-WSとCastorに触れるつもりです...そのような頭痛! –
これらの2つのXML文書は、名前空間の宣言位置の違いにもかかわらず、意味的に同じです。 Castorが好きではないが、他の人が好きなら、Castorは壊れています。私の経験上、Spring-WSが最適なオプションです.JAX-WSはあまりにも大変です。 – skaffman