UnmarshalException:使用apache servicemix时的意外元素

时间:2015-09-17 13:08:48

标签: java apache jaxb cxf apache-servicemix

我有一个功能,它发出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上工作

0 个答案:

没有答案
相关问题