This is an invalid response.   You have an soap:Envelope in the SOAP 1.1 
namespace which has a soap:Body, also in the 1.1 namespace, but that then has 
another Body in it which then has the Fault.  Not sure why you have the two 
Body's.   To complicate things, the fault code is then defined using the Soap 
1.2 namespace.   

Dan

On Feb 19, 2013, at 8:26 AM, galvanni <[email protected]> wrote:

> Getting this exception in my JAX-WS dynamic proxy.  The AckResponse is a
> valid response type as declared in the WSDL - when things go right that
> works fine.  However, when a fault is thrown because of a validation error
> e.g., below response, the client cannot unmarshal the fault.  Looking for
> some assistance with this as I'm now at a loss to what's going on here.
> 
> The exception...
> 
> javax.xml.ws.soap.SOAPFaultException: Unexpected element
> {http://schemas.xmlsoap.org/soap/envelope/}Body found.   Expected
> {http://mhs.mckesson.com/common/schema/AckResponseV1}Response.
>       at 
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:156)
> 
> --------------------------------------------------------------------------------
> 
> When I trace the response envelope it looks like this - looks fine to me. 
> We have a custom fault container type i.e.,
> http://mhs.mckesson.com/common/schema/FaultV1 in the detail section but that
> should be valid as well according to the wsdl.
> 
> 
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
>       <soap:Body>
>               <SOAP-ENV:Body 
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";>
>                   <SOAP-ENV:Fault>
>                       <faultcode
> xmlns:env="http://www.w3.org/2003/05/soap-envelope";>env:Sender</faultcode>
>                       <faultstring>Contract has a contractee with invalid 
> type "No Entity
> Type"</faultstring>
>                       <faultactor>provider.createContract</faultactor>
>                       <detail>
>                               <Fault 
> xmlns="http://mhs.mckesson.com/common/schema/FaultV1";>
>                                       <Event code="70050">
>                                               <Desc
> xmlns="http://mhs.mckesson.com/common/schema/CommonV1";>Invalid entity
> id</Desc>
>                                       </Event>
>                               </Fault>
>                       </detail>
>                   </SOAP-ENV:Fault>
>               </SOAP-ENV:Body>
>       </soap:Body>
> </soap:Envelope>
> 
> --------------------------------------------------------------------------------
> 
> And the WSDL for this service.
> 
> 
> <wsdl:definitions
> targetNamespace="http://mhs.mckesson.com/contracting/contract/ContractServiceV1";
>                  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
>                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
>                  xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> 
> xmlns:tns="http://mhs.mckesson.com/contracting/contract/ContractServiceV1";
> 
> xmlns:ack="http://mhs.mckesson.com/common/schema/AckResponseV1";
> 
> xmlns:cc="http://mhs.mckesson.com/contracting/schema/CreateContractV1";
>                  xmlns:err="http://mhs.mckesson.com/common/schema/FaultV1";
>                  name="ContractService">
> 
>    <wsdl:documentation>Contracting canonical message
> schema(s)</wsdl:documentation>
>    <wsdl:types>
>        <xsd:schema>
>            <xsd:import
> namespace="http://mhs.mckesson.com/common/schema/AckResponseV1";
> schemaLocation="com/mckesson/mhs/common/schema/AckResponseV1.xsd"/>
>            <xsd:import
> namespace="http://mhs.mckesson.com/common/schema/FaultV1";
> schemaLocation="com/mckesson/mhs/common/schema/FaultV1.xsd"/>
>            <xsd:import
> namespace="http://mhs.mckesson.com/contracting/schema/CreateContractV1";
> schemaLocation="com/mckesson/mhs/contracting/schema/CreateContractV1.xsd"/>
>        </xsd:schema>
>    </wsdl:types>
> 
>    <wsdl:message name="mCreateContract">
>        <wsdl:part name="parameters" element="cc:CreateContractRequest"/>
>    </wsdl:message>
> 
>    <wsdl:message name="mAckResponse">
>        <wsdl:part name="parameters" element="ack:Response"/>
>    </wsdl:message>
> 
>    <wsdl:message name="mFault">
>        <wsdl:part name="fault" element="err:Fault"/>
>    </wsdl:message>
> 
>    <wsdl:portType name="ptCreateContract">
>        <wsdl:operation name="CreateContractRequest">
>            <wsdl:input message="tns:mCreateContract"/>
>            <wsdl:output message="tns:mAckResponse"/>
>            <wsdl:fault name="fault" message="tns:mFault"/>
>        </wsdl:operation>
>    </wsdl:portType>
> 
>    <wsdl:binding name="bdgCreateContract" type="tns:ptCreateContract">
>        <soap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
>        <wsdl:operation name="CreateContractRequest">
>            <soap:operation
> soapAction="http://mhs.mckesson.com/services/contracting/createContract"/>
>            <wsdl:input>
>                <soap:body use="literal"/>
>            </wsdl:input>
>            <wsdl:output>
>                <soap:body use="literal"/>
>            </wsdl:output>
>            <wsdl:fault name="fault">
>                <soap:fault use="literal" name="fault"/>
>            </wsdl:fault>
>        </wsdl:operation>
>    </wsdl:binding>
> 
>    <wsdl:service name="CreateContractService">
>        <wsdl:port name="ptCreateContract" binding="tns:bdgCreateContract">
>            <soap:address
> location="http://localhost:8085/services/contracting"/>
>        </wsdl:port>
>    </wsdl:service>
> 
> </wsdl:definitions>
> 
> 
> 
> --
> View this message in context: 
> http://cxf.547215.n5.nabble.com/Problem-unmarshalling-fault-in-CXF-JAX-WS-client-tp5723372.html
> Sent from the cxf-user mailing list archive at Nabble.com.

-- 
Daniel Kulp
[email protected] - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com

Reply via email to