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.