Java Spring WS org.springframework.ws.soap.saaj.SaajSoapEnvelopeException:无法访问信封

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

servlet.xml中:

  classpath:ws.properties                                  com.db.vhs.ws.jaxb.PlacementRequest com.db.vhs.ws.jaxb.PlacementResponse... 

scheam.xsd:

                                                                                                                                                                               

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

 Apache Tomcat/7.0.29 - Error report 

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:


type Exception report

message 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:

description 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.

exception

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:无法访问信封:无法从给定的源创建信封:; 嵌套exception是com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:无法从给定源创建信封:
 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)

根本原因

  com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:无法从给定的源创建信封:
 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)

根本原因

  javax.xml.transform.TransformerException:org.xml.sax.SAXParseException:根元素之前的文档中的标记必须格式正确。
 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)

根本原因

  org.xml.sax.SAXParseException:根元素之前的文档中的标记必须格式正确。
 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备注 Apache Tomcat / 7.0.29日志中提供了根本原因的完整堆栈跟踪。

Apache Tomcat / 7.0.29

pom.xml中:

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

我读到可能是Web服务器覆盖了maven依赖项? 或者您有任何建议如何解决这个问题? 非常感谢,如果有人可以帮助!

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

基本上你必须使用xalanxercesimpl的上层版本。 我的pom的依赖关系看起来像这样:

  ...  ...  jaxen jaxen 1.1.3 compile   maven-cobertura-plugin maven-plugins   maven-findbugs-plugin maven-plugins   xalan xalan   xercesImpl xerces    ...  xalan xalan 2.7.0 jar compile   xml-apis xml-apis     xerces xercesImpl 2.9.1 jar compile   xml-apis xml-apis     ...  

我希望它对你有所帮助。

我刚刚遇到了同样的问题。

在我的情况下,问题是旧的spring-ws版本与HTTPS一起使用。

升级到最新版(2.1.3)有帮助。

我有这个问题

我创建了在其中写入信封汤的xml文件。并通过curl运行它,如下所示:

curl –header“Content-Type:text / xml; charset = UTF-8”–header“SOAPAction:urn:LoginRequest”–data @ loginRequest.xml http:// …..:8080 / .. ./LoginRequest.asmx

然后它返回上层exception。

就我而言,问题是loginRequest.xml中的额外行

我只是删除额外的行,它修复:)