我有一个功能,它发出SOAP请求,然后解组请求的结果,但是我得到以下异常:
2015-09-17 12:00:01,406 | WARN | ate.request.UPS] | EndpointMessageListener | 122 - org.apache.camel.camel-core - 2.14.3 | Execution of JMS message listener failed. Caused by: [org.apache.camel.RuntimeCamelException - org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element (uri:"http://www.ups.com/schema/xpci/1.0/error", local:"ErrorDetail"). Expected elements are <{http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1}ErrorDetail> ]
org.apache.camel.RuntimeCamelException: org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element (uri:"http://www.ups.com/schema/xpci/1.0/error", local:"ErrorDetail"). Expected elements are <{http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1}ErrorDetail>
at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1364)[122:org.apache.camel.camel-core:2.14.3]
at org.apache.camel.component.jms.EndpointMessageListener$EndpointMessageListenerAsyncCallback.done(EndpointMessageListener.java:186)[124:org.apache.camel.camel-jms:2.14.3]
at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:107)[124:org.apache.camel.camel-jms:2.14.3]
at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:562)[116:org.apache.servicemix.bundles.spring-jms:3.2.11.RELEASE_1]
at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:500)[116:org.apache.servicemix.bundles.spring-jms:3.2.11.RELEASE_1]
at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:468)[116:org.apache.servicemix.bundles.spring-jms:3.2.11.RELEASE_1]
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325)[116:org.apache.servicemix.bundles.spring-jms:3.2.11.RELEASE_1]
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263)[116:org.apache.servicemix.bundles.spring-jms:3.2.11.RELEASE_1]
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1101)[116:org.apache.servicemix.bundles.spring-jms:3.2.11.RELEASE_1]
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1093)[116:org.apache.servicemix.bundles.spring-jms:3.2.11.RELEASE_1]
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:990)[116:org.apache.servicemix.bundles.spring-jms:3.2.11.RELEASE_1]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_79]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_79]
at java.lang.Thread.run(Thread.java:745)[:1.7.0_79]
Caused by: org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element (uri:"http://www.ups.com/schema/xpci/1.0/error", local:"ErrorDetail"). Expected elements are <{http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1}ErrorDetail>
at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:911)[148:org.apache.cxf.cxf-rt-databinding-jaxb:3.0.5]
at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:712)[148:org.apache.cxf.cxf-rt-databinding-jaxb:3.0.5]
at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:176)[148:org.apache.cxf.cxf-rt-databinding-jaxb:3.0.5]
at org.apache.cxf.interceptor.ClientFaultConverter.processFaultDetail(ClientFaultConverter.java:155)[143:org.apache.cxf.cxf-core:3.0.5]
at org.apache.cxf.interceptor.ClientFaultConverter.handleMessage(ClientFaultConverter.java:82)[143:org.apache.cxf.cxf-core:3.0.5]
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)[143:org.apache.cxf.cxf-core:3.0.5]
at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113)[143:org.apache.cxf.cxf-core:3.0.5]
at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)[150:org.apache.cxf.cxf-rt-bindings-soap:3.0.5]
at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)[150:org.apache.cxf.cxf-rt-bindings-soap:3.0.5]
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)[143:org.apache.cxf.cxf-core:3.0.5]
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:784)[143:org.apache.cxf.cxf-core:3.0.5]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1645)[153:org.apache.cxf.cxf-rt-transports-http:3.0.5]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:1156)[153:org.apache.cxf.cxf-rt-transports-http:3.0.5]
at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$3.run(AutomaticWorkQueueImpl.java:428)[143:org.apache.cxf.cxf-core:3.0.5]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_79]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_79]
at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$AWQThreadFactory$1.run(AutomaticWorkQueueImpl.java:353)[143:org.apache.cxf.cxf-core:3.0.5]
... 1 more
Caused by: javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.ups.com/schema/xpci/1.0/error", local:"ErrorDetail"). Expected elements are <{http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1}ErrorDetail>
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:642)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:254)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:249)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:116)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.childElement(Loader.java:101)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at com.sun.xml.bind.v2.runtime.unmarshaller.StructureLoader.childElement(StructureLoader.java:243)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:478)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:459)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at com.sun.xml.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(InterningXmlVisitor.java:71)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:148)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:239)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:276)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:245)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at com.sun.xml.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:122)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:314)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:293)[89:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_2]
at org.apache.cxf.jaxb.JAXBEncoderDecoder.doUnmarshal(JAXBEncoderDecoder.java:837)[148:org.apache.cxf.cxf-rt-databinding-jaxb:3.0.5]
at org.apache.cxf.jaxb.JAXBEncoderDecoder.access$100(JAXBEncoderDecoder.java:102)[148:org.apache.cxf.cxf-rt-databinding-jaxb:3.0.5]
at org.apache.cxf.jaxb.JAXBEncoderDecoder$2.run(JAXBEncoderDecoder.java:897)
at java.security.AccessController.doPrivileged(Native Method)[:1.7.0_79]
at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:895)[148:org.apache.cxf.cxf-rt-databinding-jaxb:3.0.5]
... 17 more
据我所知,显然返回了一个具有不匹配命名空间的元素。但是,在我的项目中找不到命名空间:http://www.ups.com/schema/xpci/1.0/error
。
奇怪的是,我在一个弹簧项目中使用相同的wsdl,xsd&#39;等等。当我在servicemix中使用相同的内容时,我得到了上述异常。
在wsdl中,定义了以下架构:
<wsdl:types>
<xsd:schema>
<!-- This schema defines the UPS Security header used for authorization purposes -->
<xsd:import namespace="http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0" schemaLocation="UPSSecurity.xsd"/>
<!-- This schema defines the error detail data types returned within SOAPFaults to provide more specific information pertaining to the problem. -->
<xsd:import namespace="http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1" schemaLocation="Error1.1.xsd"/>
<!-- This schema defines the Tracking service data types -->
<xsd:import namespace="http://www.ups.com/XMLSchema/XOLTWS/Track/v2.0" schemaLocation="TrackWebServiceSchema.xsd"/>
</xsd:schema>
</wsdl:types>
我为端点等定义了以下配置。
<cxf:cxfEndpoint
id="upsTrackEndpoint"
address="${ups.service.endpoint.track}"
serviceClass="com.ups.wsdl.xoltws.track.v2.TrackPortType"
wsdlURL="wsdl/Track.wsdl">
<!-- <cxf:properties> -->
<!-- <entry key="schema-validation-enabled" value="false"/> -->
<!-- </cxf:properties> -->
</cxf:cxfEndpoint>
<http:conduit name="{http://www.ups.com/WSDL/XOLTWS/Track/v2.0}TrackPortTypePort.http-conduit">
<http:client ConnectionTimeout="10000" ReceiveTimeout="10000"/>
</http:conduit>
我正在使用服务组合5.4.1 ,它已经在5.3.2上工作