Hi,

Before you comment out the 
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT,

            use = SOAPBinding.Use.LITERAL,

            parameterStyle = SOAPBinding.ParameterStyle.BARE)


Your server expect a doc/lit/bare message, but what your cxf client send is a 
doc/lit/wrapped message, this mismatch cause such exception.

Google "doc literal wrapped vs bare" you can get  lots of explanation about 
doc/literal/bare and wrapped.

Freeman
-------------
Freeman Fang

FuseSource
Email:[email protected]
Web: fusesource.com
Twitter: freemanfang
Blog: http://freemanfang.blogspot.com
http://blog.sina.com.cn/u/1473905042
weibo: http://weibo.com/u/1473905042

On 2012-9-2, at 上午7:12, Ryan F. Shelley wrote:

> I should note that when I commented out the following SOAPBinding on the API, 
> it started working:
> 
> 
> @SOAPBinding(style = SOAPBinding.Style.DOCUMENT,
> 
>             use = SOAPBinding.Use.LITERAL,
> 
>             parameterStyle = SOAPBinding.ParameterStyle.BARE)
> 
> 
> I don't know what the reason for this would be though.
> 
> -Ryan
> 
> From: "Ryan F. Shelley" 
> <[email protected]<mailto:[email protected]>>
> Date: Saturday, September 1, 2012 4:02 PM
> To: "[email protected]<mailto:[email protected]>" 
> <[email protected]<mailto:[email protected]>>
> Subject: Operation in request
> 
> For some reason, I end up with different generated SOAP requests between the 
> CXF client and a soapUI client. The one from soapUI works. The one from CXF 
> doesn't. Here are the two generated requests and the error:
> 
> CXF's Request:
> 
> <soap:Envelope 
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";<http://schemas.xmlsoap.org/soap/envelope/%22>>
>  <soap:Body>
>    <ns2:getOrderDetails xmlns:ns2="http://foo/";<http://foo/%22>>
>      <getOrderDetailsRequest>
>        <getOrderDetailsPayload id="3545"></getOrderDetailsPayload>
>      </getOrderDetailsRequest>
>    </ns2:getOrderDetails>
>  </soap:Body>
> </soap:Envelope>
> 
> soapUI's Request:
> 
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> xmlns:ord="http://foo/";<http://foo/%22>>
>  <soapenv:Header/>
>  <soapenv:Body>
>    <ord:getOrderDetailsRequest>
>      <getOrderDetailsPayload id="3545"></getOrderDetailsPayload>
>    </ord:getOrderDetailsRequest>
>  </soapenv:Body>
> </soapenv:Envelope>
> 
> Note that the real difference between the two is that "getOrderDetails" 
> element exists in the CXF request, and NOT in the soapUI request. When I run 
> the soapUI request it fires my code fine. The CXF client request however 
> results in the following error:
> 
> Caused by: org.apache.cxf.binding.soap.SoapFault: Unmarshalling Error: 
> unexpected element (uri:"", local:"getOrderDetailsRequest"). Expected 
> elements are <{}getOrderDetailsPayload>
> 
> I don't know which is correct, but I really need the CXF client to work. How 
> do I get the client to NOT include the operation OR make the endpoint require 
> the operation element?
> 
> -Ryan
> 
> 
> 

Reply via email to