我在不同的环境中遇到了 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.
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
基本上你必须使用高版本的xalan 和xercesimpl。我的 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/
我正在尝试使用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请求没有正确的命名空间。任何人都可以建议我
我正在构建一个Rails应用程序,该应用程序将基本上包含一组SOAP命令。我不想每次都获取WSDL来实现某种缓存方法,尽管我不太确定从哪里开始执行此操作。是否有特定于Rails的东西可以帮助我,或者我应该通过Ruby下载文件并加载它?只是在寻找某种总体方向...... 最佳答案 如果您使用savon然后是remoteWSDLwillbedownloadedonceperclientinstance:the(remote)WSDLhastobedownloadedandparsedonceforeveryclientandsocome
我正在使用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我不确定为什么会出现这些消息,或者它们的含义。有什么想法吗? 最佳答案
我在更改正在构建的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:
ws --> WebSocket非加密(端口8083)wss-->WebSocketSSL加密(端口8084)mqtt-->mqtt非加密(端口1883)mqtts-->mqtt加密 (端口8884)WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据初学者容易出现以下几个错误:连接地址没有指明协议:WebSocket作为一种通信协议,其使用 ws (非加密)、wss(SSL加密)作为协议标识。MQTT.js客户端支持多种协议,连接地址需指明协议类型;连接地址没有指明端口:MQTT并未对WebSocket接入端口做出规定,EMQX上默认使用 8083
我正在尝试访问我无法控制的SOAP服务。其中一个操作称为ProcessMessage。我按照这个例子生成了一个SOAP请求,但我收到一条错误消息,指出该操作不存在。我将问题追溯到生成信封正文的方式。USER658e702d5feff1777a6c741847239eb5d6d86e482010-02-18T02:05:25Zpassword......ProcessMessage标签应该是:这就是示例Java应用程序生成它时的样子,并且可以正常工作。该标记是我的Ruby应用程序生成的内容与示例Java应用程序之间的唯一区别。有什么方法可以去掉那个标签前面的"wsdl:"命名空间并添加这
我需要为一个调用在ruby中实现一个soap服务器,并提供一个WSDL。我的计划是自己创建WSDL,并在带有解析xml的端点的Rails服务器上提供它。那是一条有效的路径吗?我查看并找不到关于生成WSDL的rubysoap服务器的其他信息。ActionWeb服务有,但最后一次更新是在2005年,并且soap4r独立服务器不会生成WSDL。 最佳答案 任何对这个问题的有效解决方案感兴趣的人都应该试一试gem“wash_out”。我已经成功开发了一个带有v0.8.2的SOAP服务器请引用thegem'sgithubreposit
我正在尝试使用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
总结: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
我的一个客户要求我将第3方API集成到他们的Rails应用程序中。唯一的问题是API使用SOAP。Ruby基本上放弃了SOAP以支持REST。他们提供了一个Java适配器,显然可以与Java-Ruby桥一起使用,但如果可能的话,我们希望将其全部保留在Ruby中。我调查了soap4r,但它的名声似乎有点差。那么将SOAP调用集成到Rails应用程序中的最佳方法是什么? 最佳答案 我build了Savon尽可能简单地通过Ruby与SOAP网络服务进行交互。我建议您检查一下。 关于ruby-o