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
>
>
>