草庐IT

Java Spring WS org.springframework.ws.soap.saaj.SaajSoapEnvelopeException : Could not access envelope

coder 2024-03-31 原文

我在不同的环境中遇到了 spring ws 的奇怪行为。以下在本地 tomcat 7.0.29 上与 Soap UI 一起工作正常,但确实返回下面提到的错误。

servlet.xml:

<bean id="propertyPlaceholder"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <value>classpath:ws.properties</value>
    </property>
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_FALLBACK" />
    <property name="searchSystemEnvironment" value="true" />
</bean>


<bean
    class="org.springframework.ws.transport.http.WsdlDefinitionHandlerAdapter">
    <property name="transformLocations" value="true" />
</bean>

<bean
    class="org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter">
    <property name="messageFactory">
        <bean class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory" />
    </property>
</bean>

<bean id="payloadMapping"
    class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping">
    <property name="interceptors">
        <list>
            <ref local="validatingInterceptor" />
        </list>
    </property>
</bean>

<bean id="validatingInterceptor"
    class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor"
    autowire="byName">
    <property name="schema" value="/xsd/schema.xsd" />
    <property name="validateRequest" value="true" />
    <property name="validateResponse" value="true" />
</bean>



<bean
    class="org.springframework.ws.soap.server.endpoint.SoapFaultAnnotationExceptionResolver" />





<bean id="defaultHandlerMapping"
    class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

<bean id="baseWsdlDefinition" abstract="true"
    class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
    <property name="requestSuffix" value="Request" />
    <property name="responseSuffix" value="Response" />
</bean>

<bean id="sampleJaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>
            <value>com.db.vhs.ws.jaxb.PlacementRequest</value>
            <value>com.db.vhs.ws.jaxb.PlacementResponse</value>...

scheam.xsd:

<xs:annotation>

    <xs:appinfo>

        <jaxb:globalBindings>

            <jaxb:javaType name="java.util.Date" xmlType="xs:dateTime"
                parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime"
                printMethod="javax.xml.bind.DatatypeConverter.printDateTime" />

        </jaxb:globalBindings>

    </xs:appinfo>

</xs:annotation>




<!-- getClusterRequest -->

<xs:element name="getClusterRequest">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="id" type="xs:long" />
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:element name="getClusterResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="id" type="xs:long" />
            <xs:element name="Vcenter" type="xs:string" />
            <xs:element name="NAME" type="xs:string" />
            <xs:element name="MOREF" type="xs:string" />
            <xs:element name="OVERALLSTATUS" type="xs:string" />
            <xs:element name="COLLECTIONDATE" type="xs:dateTime" />
            <xs:element name="DPMENABLED" type="xs:int" />
            <xs:element name="DRSENABLED" type="xs:int" />
            <xs:element name="HAENABLED" type="xs:int" />
            <xs:element name="NUMCPUCORES" type="xs:int" />
            <xs:element name="NUMHOSTS" type="xs:int" />
            <xs:element name="TOTALCPU" type="xs:long" />
            <xs:element name="TOTALMEMORY" type="xs:long" />
            <xs:element name="VDatacenterID" type="xs:long" />
        </xs:sequence>
    </xs:complexType>
</xs:element>


<xs:element name="placementRequest">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="request_header" type="header" />
            <xs:element name="request_body" type="requestBody" />
        </xs:sequence>
    </xs:complexType>
</xs:element>




<xs:complexType name="header">
    <xs:sequence>
        <xs:element name="request_id" type="xs:string" />
        <xs:element name="uuid" type="xs:string" />
        <xs:element name="type" type="xs:string" />
        <xs:element name="request_type">
            <xs:simpleType>
                <xs:restriction base="xs:int">
                    <xs:minInclusive value="0" />
                    <xs:maxInclusive value="1" />
                </xs:restriction>
            </xs:simpleType>
        </xs:element>
    </xs:sequence>
</xs:complexType>



<xs:complexType name="requestBody">
    <xs:sequence>
        <xs:choice>
            <xs:element name="cluster_request" type="clusterRequest" />
            <xs:element name="region_request" type="regionRequest" />
        </xs:choice>
    </xs:sequence>
</xs:complexType>



<xs:complexType name="clusterRequest">
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
        <xs:element name="cluster" type="xs:string" />
    </xs:sequence>
</xs:complexType>

<xs:complexType name="regionRequest">
    <xs:sequence>
        <xs:element name="region" type="xs:string" />
        <xs:element name="OS" type="xs:string" />
        <xs:element name="clusterProductType">
            <xs:simpleType>
                <xs:list itemType="xs:string" />
            </xs:simpleType>
        </xs:element>
        <xs:element name="class">
            <xs:simpleType>
                <xs:restriction base="xs:int">
                    <xs:minInclusive value="0" />
                    <xs:maxInclusive value="3" />
                </xs:restriction>
            </xs:simpleType>
        </xs:element>
        <xs:element name="class_type">
            <xs:simpleType>
                <xs:restriction base="xs:int">
                    <xs:minInclusive value="0" />
                    <xs:maxInclusive value="2" />
                </xs:restriction>
            </xs:simpleType>
        </xs:element>
        <xs:element name="subnet" type="xs:string" />
    </xs:sequence>
</xs:complexType>





<xs:element name="placementResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="response_header" type="header" />
            <xs:element name="response_body" type="responseBody" />
        </xs:sequence>
    </xs:complexType>
</xs:element>





<xs:complexType name="responseBody">
    <xs:sequence>
        <xs:element name="class">
            <xs:simpleType>
                <xs:restriction base="xs:int">
                    <xs:minInclusive value="0" />
                    <xs:maxInclusive value="3" />
                </xs:restriction>
            </xs:simpleType>
        </xs:element>
        <xs:element name="capacity">
            <xs:complexType>
                <xs:sequence minOccurs="0" maxOccurs="unbounded">
                    <xs:element name="cluster">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="cluster_name" type="xs:string"></xs:element>
                                <xs:element name="v_center" type="xs:string"></xs:element>
                                <xs:sequence minOccurs="0" maxOccurs="unbounded">
                                    <xs:element name="storage" type="storage"></xs:element>
                                </xs:sequence>
                                <xs:sequence minOccurs="0" maxOccurs="unbounded">
                                    <xs:element name="host" type="host"></xs:element>
                                </xs:sequence>
                                <xs:element name="class_type" type="xs:int"></xs:element>
                                <xs:element name="timestamp" type="xs:string"></xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:sequence>
</xs:complexType>




<!-- complex types for response ngp -->


<xs:complexType name="storage">
    <xs:sequence>
        <xs:element name="data_store_name" type="xs:string" />
        <xs:element name="total_storage" type="xs:long" />
        <xs:element name="allocated_storage" type="xs:long" />
        <xs:element name="storage_class" type="xs:string" />
    </xs:sequence>
</xs:complexType>


<xs:complexType name="host">
    <xs:sequence>
        <xs:element name="host_name" type="xs:string" />
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="port_group_name" type="portgroup" />
        </xs:sequence>
        <xs:element name="physical_cpus" type="xs:int" />
        <xs:element name="allocated_cpus" type="xs:int" />
        <xs:element name="available_cpu_size" type="xs:long" />
        <xs:element name="average_cpu_usage" type="xs:double" />
        <xs:element name="max_cpu_usage" type="xs:double" />
        <xs:element name="physical_memory" type="xs:long" />
        <xs:element name="allocated_memory" type="xs:long" />
        <xs:element name="average_memory_usage" type="xs:double" />
        <xs:element name="max_memory_usage" type="xs:double" />
        <xs:element name="number_of_vms" type="xs:int" />
    </xs:sequence>
</xs:complexType>

<xs:complexType name="portgroup">
    <xs:sequence>
        <xs:element name="name" type="xs:string" />
        <xs:element name="subnet" type="xs:string" />
    </xs:sequence>
</xs:complexType>

第一种方法适用于两种环境,第二种方法 (placementRequest) 返回:

<html><head><title>Apache Tomcat/7.0.29 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 500 - Request processing failed; nested exception is org.springframework.ws.soap.saaj.SaajSoapEnvelopeException: Could not access envelope: Unable to create envelope from given source: ; nested exception is com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source: </h1><HR size="1" noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> <u>Request processing failed; nested exception is org.springframework.ws.soap.saaj.SaajSoapEnvelopeException: Could not access envelope: Unable to create envelope from given source: ; nested exception is com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source: </u></p><p><b>description</b> <u>The server encountered an internal error (Request processing failed; nested exception is org.springframework.ws.soap.saaj.SaajSoapEnvelopeException: Could not access envelope: Unable to create envelope from given source: ; nested exception is com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source: ) that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.ws.soap.saaj.SaajSoapEnvelopeException: Could not access envelope: Unable to create envelope from given source: ; nested exception is com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source:

org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:583) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

根本原因

org.springframework.ws.soap.saaj.SaajSoapEnvelopeException: Could not access envelope: Unable to create envelope from given source: ; nested exception is com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source:
org.springframework.ws.soap.saaj.SaajSoapMessage.getEnvelope(SaajSoapMessage.java:107)
org.springframework.ws.soap.AbstractSoapMessage.getSoapBody(AbstractSoapMessage.java:36)
org.springframework.ws.soap.AbstractSoapMessage.getPayloadSource(AbstractSoapMessage.java:46)
org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping.getLookupKeyForMessage(PayloadRootAnnotationMethodEndpointMapping.java:57)
org.springframework.ws.server.endpoint.mapping.AbstractMethodEndpointMapping.getEndpointInternal(AbstractMethodEndpointMapping.java:56)
org.springframework.ws.server.endpoint.mapping.AbstractEndpointMapping.getEndpoint(AbstractEndpointMapping.java:83)
org.springframework.ws.server.MessageDispatcher.getEndpoint(MessageDispatcher.java:248)
org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:201)
org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:168)
org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:88)
org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:57)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause

com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source:
com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:114)
com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:70)
com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:122)
org.springframework.ws.soap.saaj.Saaj13Implementation.getEnvelope(Saaj13Implementation.java:169)
org.springframework.ws.soap.saaj.SaajSoapMessage.getEnvelope(SaajSoapMessage.java:103)
org.springframework.ws.soap.AbstractSoapMessage.getSoapBody(AbstractSoapMessage.java:36)
org.springframework.ws.soap.AbstractSoapMessage.getPayloadSource(AbstractSoapMessage.java:46)
org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping.getLookupKeyForMessage(PayloadRootAnnotationMethodEndpointMapping.java:57)
org.springframework.ws.server.endpoint.mapping.AbstractMethodEndpointMapping.getEndpointInternal(AbstractMethodEndpointMapping.java:56)
org.springframework.ws.server.endpoint.mapping.AbstractEndpointMapping.getEndpoint(AbstractEndpointMapping.java:83)
org.springframework.ws.server.MessageDispatcher.getEndpoint(MessageDispatcher.java:248)
org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:201)
org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:168)
org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:88)
org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:57)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause

javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: The markup in the document preceding the root element must be well-formed.
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:719)
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)
com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer.transform(EfficientStreamingTransformer.java:393)
com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:102)
com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:70)
com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:122)
org.springframework.ws.soap.saaj.Saaj13Implementation.getEnvelope(Saaj13Implementation.java:169)
org.springframework.ws.soap.saaj.SaajSoapMessage.getEnvelope(SaajSoapMessage.java:103)
org.springframework.ws.soap.AbstractSoapMessage.getSoapBody(AbstractSoapMessage.java:36)
org.springframework.ws.soap.AbstractSoapMessage.getPayloadSource(AbstractSoapMessage.java:46)
org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping.getLookupKeyForMessage(PayloadRootAnnotationMethodEndpointMapping.java:57)
org.springframework.ws.server.endpoint.mapping.AbstractMethodEndpointMapping.getEndpointInternal(AbstractMethodEndpointMapping.java:56)
org.springframework.ws.server.endpoint.mapping.AbstractEndpointMapping.getEndpoint(AbstractEndpointMapping.java:83)
org.springframework.ws.server.MessageDispatcher.getEndpoint(MessageDispatcher.java:248)
org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:201)
org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:168)
org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:88)
org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:57)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause

org.xml.sax.SAXParseException: The markup in the document preceding the root element must be well-formed.
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231)
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333)
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:636)
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:707)
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)
com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer.transform(EfficientStreamingTransformer.java:393)
com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:102)
com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:70)
com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:122)
org.springframework.ws.soap.saaj.Saaj13Implementation.getEnvelope(Saaj13Implementation.java:169)
org.springframework.ws.soap.saaj.SaajSoapMessage.getEnvelope(SaajSoapMessage.java:103)
org.springframework.ws.soap.AbstractSoapMessage.getSoapBody(AbstractSoapMessage.java:36)
org.springframework.ws.soap.AbstractSoapMessage.getPayloadSource(AbstractSoapMessage.java:46)
org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping.getLookupKeyForMessage(PayloadRootAnnotationMethodEndpointMapping.java:57)
org.springframework.ws.server.endpoint.mapping.AbstractMethodEndpointMapping.getEndpointInternal(AbstractMethodEndpointMapping.java:56)
org.springframework.ws.server.endpoint.mapping.AbstractEndpointMapping.getEndpoint(AbstractEndpointMapping.java:83)
org.springframework.ws.server.MessageDispatcher.getEndpoint(MessageDispatcher.java:248)
org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:201)
org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:168)
org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:88)
org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:57)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.29 logs.

Apache Tomcat/7.0.29

pom.xml:

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.1.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.1.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>3.1.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>3.1.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jdbc</artifactId>
        <version>7.0.29</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.ws</groupId>
        <artifactId>spring-ws-core-tiger</artifactId>
        <version>1.5.7</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.ws</groupId>
        <artifactId>spring-ws-core</artifactId>
        <version>1.5.7</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.messaging.saaj</groupId>
        <artifactId>saaj-impl</artifactId>
        <version>1.3</version>
    </dependency>
    <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>2.8.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.ws.commons.schema</groupId>
        <artifactId>XmlSchema</artifactId>
        <version>1.4.2</version>
    </dependency>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.2</version>
    </dependency>
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.2.0</version>
    </dependency>
    <dependency>
        <groupId>com.cloudbees.thirdparty</groupId>
        <artifactId>vijava</artifactId>
        <version>5.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.4</version>
    </dependency>
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.6</version>
    </dependency>
    <dependency>
        <groupId>commons-configuration</groupId>
        <artifactId>commons-configuration</artifactId>
        <version>1.7</version>
    </dependency>
    <dependency>
        <groupId>dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>1.6.1</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.1.2</version>
    </dependency>
</dependencies>

我读到可能是 Web 服务器覆盖了 Maven 依赖项?或者你对如何解决这个问题有什么建议吗?如果有人可以提供帮助,将不胜感激!!!

最佳答案

我和你有同样的错误。我在这里找到了解决方案:http://mmmsoftware.blogspot.com.es/2009/06/xml-namespace-error-with-spring-ws.html

基本上你必须使用高版本的xalanxercesimpl。我的 pom 的依赖项如下所示:

<project ...>
 ...
<dependencies>

             ...

    <dependency>
        <groupId>jaxen</groupId>
        <artifactId>jaxen</artifactId>
        <version>1.1.3</version>
        <scope>compile</scope>
        <exclusions>
            <exclusion>
                <artifactId>maven-cobertura-plugin</artifactId>
                <groupId>maven-plugins</groupId>
            </exclusion>
            <exclusion>
                <artifactId>maven-findbugs-plugin</artifactId>
                <groupId>maven-plugins</groupId>
            </exclusion>
            <exclusion>
                <artifactId>xalan</artifactId>
                <groupId>xalan</groupId>
            </exclusion>
            <exclusion>
                <artifactId>xercesImpl</artifactId>
                <groupId>xerces</groupId>
            </exclusion>
        </exclusions>
    </dependency>

             ...

    <dependency>
        <groupId>xalan</groupId>
        <artifactId>xalan</artifactId>
        <version>2.7.0</version>
        <type>jar</type>
        <scope>compile</scope>
        <exclusions>
            <exclusion>
                <artifactId>xml-apis</artifactId>
                <groupId>xml-apis</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>2.9.1</version>
        <type>jar</type>
        <scope>compile</scope>
        <exclusions>
            <exclusion>
                <artifactId>xml-apis</artifactId>
                <groupId>xml-apis</groupId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>
 ...
</project>

希望对你有帮助。

关于Java Spring WS org.springframework.ws.soap.saaj.SaajSoapEnvelopeException : Could not access envelope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12467186/

有关Java Spring WS org.springframework.ws.soap.saaj.SaajSoapEnvelopeException : Could not access envelope的更多相关文章

  1. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  2. ruby-on-rails - 缓存 WSDL 文件而不是在每个 SOAP 请求时获取它 - 2

    我正在构建一个Rails应用程序,该应用程序将基本上包含一组SOAP命令。我不想每次都获取WSDL来实现某种缓存方法,尽管我不太确定从哪里开始执行此操作。是否有特定于Rails的东西可以帮助我,或者我应该通过Ruby下载文件并加载它?只是在寻找某种总体方向...... 最佳答案 如果您使用savon然后是remoteWSDLwillbedownloadedonceperclientinstance:the(remote)WSDLhastobedownloadedandparsedonceforeveryclientandsocome

  3. ruby - "HTTPI tried to user the httpi adapter"使用 Savon SOAP 库时出错 - 2

    我正在使用Savon为SOAP服务编写一个Ruby接口(interface)。它似乎正在工作,但我在命令行上出现了几条DEBUG消息D,[2011-02-15T16:33:32.664620#4140]DEBUG--:HTTPI尝试使用httpclient适配器,但无法在LOAD_PATH中找到库。后退现在使用net_http适配器。D,[2011-02-15T16:33:32.820863#4140]DEBUG--:HTTPI使用net_http适配器执行HTTPPOST我不确定为什么会出现这些消息,或者它们的含义。有什么想法吗? 最佳答案

  4. ruby /萨翁 : Having trouble with namespace for a soap request - 2

    我在更改正在构建的SOAPxml的命名空间时遇到问题。我不确定如何将“xmlns:env=”更改为“xmlns:soapenv=”,将“xmlns:tns=”更改为“xmlns:web=”我要构建的内容:100degreeCelsiusdegreeFahrenheit我目前得到的100degreeCelsiusdegreeFahrenheit我的代码:client=Savon.client(wsdl:"http://www.webservicex.net/ConvertTemperature.asmx?WSDL")message={temperature:'100',FromUnit:

  5. MQTTX工具上的 mqtt mqtts ws wss的区别,以及常见问题解答 - 2

    ws --> WebSocket非加密(端口8083)wss-->WebSocketSSL加密(端口8084)mqtt-->mqtt非加密(端口1883)mqtts-->mqtt加密 (端口8884)WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据初学者容易出现以下几个错误:连接地址没有指明协议:WebSocket作为一种通信协议,其使用 ws (非加密)、wss(SSL加密)作为协议标识。MQTT.js客户端支持多种协议,连接地址需指明协议类型;连接地址没有指明端口:MQTT并未对WebSocket接入端口做出规定,EMQX上默认使用 8083 

  6. ruby - 为什么在使用 savon 进行 ruby​​ soap 通信时将 "wsdl"命名空间插入到操作名称中? - 2

    我正在尝试访问我无法控制的SOAP服务。其中一个操作称为ProcessMessage。我按照这个例子生成了一个SOAP请求,但我收到一条错误消息,指出该操作不存在。我将问题追溯到生成信封正文的方式。USER658e702d5feff1777a6c741847239eb5d6d86e482010-02-18T02:05:25Zpassword......ProcessMessage标签应该是:这就是示例Java应用程序生成它时的样子,并且可以正常工作。该标记是我的Ruby应用程序生成的内容与示例Java应用程序之间的唯一区别。有什么方法可以去掉那个标签前面的"wsdl:"命名空间并添加这

  7. ruby - 带有 WSDL 的 ruby​​ 中的 SOAP 服务器 - 2

    我需要为一个调用在ruby​​中实现一个soap服务器,并提供一个WSDL。我的计划是自己创建WSDL,并在带有解析xml的端点的Rails服务器上提供它。那是一条有效的路径吗?我查看并找不到关于生成WSDL的ruby​​soap服务器的其他信息。ActionWeb服务有,但最后一次更新是在2005年,并且soap4r独立服务器不会生成WSDL。 最佳答案 任何对这个问题的有效解决方案感兴趣的人都应该试一试gem“wash_out”。我已经成功开发了一个带有v0.8.2的SOAP服务器请引用thegem'sgithubreposit

  8. ruby - 为 Savon 2 (SOAP) 传递数组元素 - 2

    我正在尝试使用Savongem(v2)在Ruby中编写代码,从SOAPapi获取帐户信息,但我在传递数组时遇到问题。CampaignIds应该是一个整数数组。这是我的代码:client=Savon.client(wsdl:"https://api7secure.publicaster.com/Pub7APIV1/Campaign.svc?singleWsdl")message={"EncryptedAccountID"=>api_key,"APIPassword"=>api_password,"CampaignIds"=>[3,4],"StartDate"=>yesterday,"En

  9. 本地nacos启动失败,org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean ** - 2

    总结:nacos-2.x.x要使用mysql5.7.x项目使用若依3.1.0-cloud版本,因此要使用nacos-2.x.x的版本,下载并安装nacos后,配置application.properties里的ConfigModuleRelatedConfigurations模块,#***************ConfigModuleRelatedConfigurations***************####IfuseMySQLasdatasource: spring.datasource.platform=mysql###CountofDB: db.num=1###ConnectURL

  10. ruby-on-rails - 将 SOAP 与 Ruby 结合使用的最佳方式是什么? - 2

    我的一个客户要求我将第3方API集成到他们的Rails应用程序中。唯一的问题是API使用SOAP。Ruby基本上放弃了SOAP以支持REST。他们提供了一个Java适配器,显然可以与Java-Ruby桥一起使用,但如果可能的话,我们希望将其全部保留在Ruby中。我调查了soap4r,但它的名声似乎有点差。那么将SOAP调用集成到Rails应用程序中的最佳方法是什么? 最佳答案 我build了Savon尽可能简单地通过Ruby与SOAP网络服务进行交互。我建议您检查一下。 关于ruby-o

随机推荐