cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Kulp <dk...@apache.org>
Subject Re: Client side; service returns fault; Unmarshalling Error: unexpected element
Date Tue, 02 Feb 2010 16:07:09 GMT

What does the schema look like for the createAndStartRequestByValueException 
element?    From that error message, it looks like 
createAndStartRequestByValueException is not allowed to have a 
"createException" child element.   The only expected element is a "requestKey" 
element.   

Dan


On Tue February 2 2010 5:04:16 am KnutIvar wrote:
> Hi!
> 
> I'm trying to call a service, but gets unmarshalling error when I get a
> response which (in my eyes) seems valid.
> 
> From the wsdl;
> <wsdl:operation name="createAndStartRequestByValue">
>     <wsdl:input name="createAndStartRequestByValueRequest"
> message="omWS-v1-0:createAndStartRequestByValueRequest"/>
>     <wsdl:output name="createAndStartRequestByValueResponse"
> message="omWS-v1-0:createAndStartRequestByValueResponse"/>
>     <wsdl:fault name="createAndStartRequestByValueException"
> message="omWS-v1-0:createAndStartRequestByValueException"/>
> </wsdl:operation>
> 
> The return message from the service (and now my mock...) looks kind of like
> this;
> <soapenv:Envelope
>  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body>
>         <om-v1-0:createAndStartRequestByValueException
>                 xmlns:om-v1-0="http://os.org/xml/Management/v1-0"
>                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>                 xmlns:co-v1-5="http://os.org/xml/Common/v1-5"
>                 xmlns:jrc-v2-0="http://jrc.com/ossj/xml/Common/v2-0">
>             <om-v1-0:createException xsi:type="jrc-v2-0:JrCreateException">
>                 <co-v1-5:message></co-v1-5:message>
>                 <jrc-v2-0:jrExceptionDetails>
>                     <jrc-v2-0:errorCode>60003</jrc-v2-0:errorCode>
>                     <jrc-v2-0:retryable>false</jrc-v2-0:retryable>
>                     <jrc-v2-0:errorMessage>Order state
> invalid.</jrc-v2-0:errorMessage>
> 
> <jrc-v2-0:component>com.jr.ordermanager</jrc-v2-0:component>
>                     <jrc-v2-0:severity>Medium</jrc-v2-0:severity>
>                     <jrc-v2-0:reason>No subscriber found for
> productExternalID [98802-1]</jrc-v2-0:reason>
> 
> <jrc-v2-0:requestPrimaryKey>936</jrc-v2-0:requestPrimaryKey>
>                 </jrc-v2-0:jrExceptionDetails>
>             </om-v1-0:createException>
>         </om-v1-0:createAndStartRequestByValueException>
>     </soapenv:Body>
> </soapenv:Envelope>
> 
> However; CXF doesn't like it and gives me the following stacktrace;
> org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element
> (uri:"http://ossj.org/xml/Management/v1-0", local:"createException").
> Expected elements are <{http://ossj.org/xml/Management/v1-0}requestKey>
> 	at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:7
> 64) at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:6
> 23) at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:128)
>  at
> org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteral
> InInterceptor.java:190) at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
> n.java:236) at
>  org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:671) at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleRespons
> eInternal(HTTPConduit.java:2177) at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleRespons
> e(HTTPConduit.java:2057) at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPCon
> duit.java:1982) at
>  org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) at
>  org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:637) at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInte
> rceptor.handleMessage(MessageSenderInterceptor.java:62) at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
> n.java:236) at
>  org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:483) at
>  org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:309)
>  DefaultValidationEventHandler: [ERROR]: unexpected element
> (uri:"http://ossj.org/xml/Management/v1-0", local:"createException").
> Expected elements are <{http://ossj.org/xml/Management/v1-0}requestKey>
> 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:261)
> 
> It expects a parameter which is located in the wsdl:output instead of
> mapping it to the wsdl:fault.
> Do I have to write a custom faultinterceptor in order to handle this, or
> could I add a standard interceptor to my client?
> 
> Client;
> org.apache.cxf.jaxws.JaxWsProxyFactoryBean clientFactory = new
> org.apache.cxf.jaxws.JaxWsProxyFactoryBean();
> clientFactory.setAddress("http://localhost:8088/soap/services/OrderManageme
> nt-mock"); clientFactory.setServiceClass(JVTManagementSessionWSPort.class);
> JVTManagementSessionWSPort client =
> (JVTManagementSessionWSPort)clientFactory.create();
> 
> -----
> http://www.knutivars.net www.knutivars.net
> "http://www.knutivars.net/cxf/index.html Document first Apache CXF and
> XMLBeans with Spring.
> 

-- 
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog

Mime
View raw message