[SPRING] Spring + SOAPExceptionImpl : 여러 부분 메시지 저장 중 오류가 발생했습니다.
SPRINGSpring + SOAPExceptionImpl : 여러 부분 메시지 저장 중 오류가 발생했습니다.
다른 웹 서비스를 호출하고 jsp 페이지에 결과를 표시하는 jsp 페이지가있는 스프링 웹 응용 프로그램이 있습니다. 스프링 웹 애플리케이션에는 사용자 이름 / 로그인 스프링 보안이 첨부되어 있습니다.
보안을 처리하는 웹 서비스에 대한 호출을 추가하고 있습니다. WebServiceGateway의 경우 보안 인터셉터를 추가했습니다. (아래 참조)
<bean id="securityInterceptor"
class="org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor">
<property name="securementActions" value="UsernameToken Timestamp" />
<property name="securementUsername" value="Bert" />
<property name="securementPassword" value="Ernie" />
<property name="timestampPrecisionInMilliseconds" value="true" />
</bean>
내 pom 파일에 wss4j를 추가하면 이제 웹 서비스 측에서 다음 오류가 발생합니다.
[28-13:46:26]DEBUG: org.springframework.web.servlet.FrameworkServlet.processRequest(): Could not complete request [http-8080-2]
org.springframework.ws.soap.saaj.SaajSoapMessageException: Could not write message to OutputStream: Error during saving a multipart message; nested exception is com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Error during saving a multipart message
at org.springframework.ws.soap.saaj.SaajSoapMessage.writeTo(SaajSoapMessage.java:163)
at org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:172)
at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:88)
at org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:57)
at org.springframework.ws.transport.http.MessageDispatcherServlet.doService(MessageDispatcherServlet.java:230)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Error during saving a multipart message
at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:1124)
at org.springframework.ws.soap.saaj.Saaj13Implementation.writeTo(Saaj13Implementation.java:268)
at org.springframework.ws.soap.saaj.SaajSoapMessage.writeTo(SaajSoapMessage.java:159)
... 20 more
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to get header stream in saveChanges:
at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:1101)
... 22 more
Caused by: java.io.IOException: org.apache.xml.serializer.ToXMLSAXHandler cannot be cast to org.apache.xml.serializer.SerializationHandler
at com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl.output(EnvelopeImpl.java:295)
at com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl.output(EnvelopeImpl.java:306)
at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getContentAsStream(SOAPPartImpl.java:302)
at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.getHeaderBytes(MessageImpl.java:945)
at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:1096)
... 22 more
해결법
-
==============================
1.너무 늦을 지 모르지만 여기에 설명 된 것에서 고통 받고있는 것 같습니다. Java 6의 Xerces 구현은 분명히 Spring Web Services와 호환되지 않습니다. 그들의 해결책은 승인 된 라이브러리를 사용하는 것입니다.하지만 이것은 피하고 싶습니다. 아직 JVM 설치를 수정하지 않는 좋은 해결책을 찾지 못했습니다.
너무 늦을 지 모르지만 여기에 설명 된 것에서 고통 받고있는 것 같습니다. Java 6의 Xerces 구현은 분명히 Spring Web Services와 호환되지 않습니다. 그들의 해결책은 승인 된 라이브러리를 사용하는 것입니다.하지만 이것은 피하고 싶습니다. 아직 JVM 설치를 수정하지 않는 좋은 해결책을 찾지 못했습니다.
Arjen Poutsma는 다른 해결책이있는 것 같습니다. 그는 모든 Xerces 및 Xalan 종속성을 제거했습니다. 그런 다음 작동합니다. 웹 서비스 응용 프로그램의 일부 다른 부분에서 Xerces / Xalan의 기능이 필요하지 않다면이 기능을 사용해보십시오. 해당 티켓은 SWS-175입니다.
-
==============================
2.나는 soap 웹 서비스의 스프링 클라이언트가 바람둥이에서 테스트되었을 때 절대적으로 잘 작동하고 똑같은 문제를 겪었고 jboss에서 테스트했을 때 다음과 같은 예외를 주었다.
나는 soap 웹 서비스의 스프링 클라이언트가 바람둥이에서 테스트되었을 때 절대적으로 잘 작동하고 똑같은 문제를 겪었고 jboss에서 테스트했을 때 다음과 같은 예외를 주었다.
org.springframework.ws.soap.saaj.SaajSoapMessageException : 메시지를 OutputStream에 쓸 수 없습니다 : 여러 부분 메시지를 저장하는 중 오류가 발생했습니다. 중첩 예외는 com.sun.xml.messaging.saaj.SOAPExceptionImpl : 다중 부분 메시지 저장 중 오류가 발생했습니다.
위에 주어진 대답으로 jboss-deployment-structure 파일을 다음과 같이 변경하고 활성화, xerces 및 xalan을 제외로 추가했습니다.
<exclusions> <module name="org.apache.commons.logging" /> <module name="org.apache.log4j" /> <module name="org.jboss.logging" /> <module name="org.jboss.logging.jul-to-slf4j-stub" /> <module name="org.jboss.logmanager" /> <module name="org.jboss.logmanager.log4j" /> <module name="org.slf4j" /> <module name="org.slf4j.impl" /> <module name="javaee.api"/> <module name="javax.ws.rs.api"/> <module name="org.apache.xalan"/> <module name="org.apache.xerces"/> <module name="javax.activation.api"/> </exclusions>
이것으로 jboss의 문제가 해결되었습니다.
-
==============================
3.나는 오늘도 같은 문제에 직면했다. 모든 가능한 방법을 시도하고 마지막으로 Xalan.jar 및 xerces.jar를 제거했습니다. 사실 Xalan과 Xerces JARS뿐 아니라 XercesImpl.jar와 Xalan JARS의 모든 버전이 있습니다.
나는 오늘도 같은 문제에 직면했다. 모든 가능한 방법을 시도하고 마지막으로 Xalan.jar 및 xerces.jar를 제거했습니다. 사실 Xalan과 Xerces JARS뿐 아니라 XercesImpl.jar와 Xalan JARS의 모든 버전이 있습니다.
이제 완전히 잘 작동합니다.
from https://stackoverflow.com/questions/1638986/spring-soapexceptionimpl-error-during-saving-a-multipart-message by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 : mvc : resources에서 POST 요청을 받아들이지 않습니까? 그 문제를 해결하는 방법 (0) | 2019.05.17 |
---|---|
[SPRING] 컨텍스트 초기화에 실패했습니다. NoSuchMethodError : AntPathMatcher.setCaseSensitive () (0) | 2019.05.17 |
[SPRING] 봄 부팅시 모든 테이블 메타 데이터를 얻는 방법 - JPA - 최대 절전 모드? (0) | 2019.05.17 |
[SPRING] spring-boot-maven-plugin은 형제 모듈 의존성을 깨뜨린다. (0) | 2019.05.17 |
[SPRING] spring xml을 설정하여 spring을 확장하는 방법 (0) | 2019.05.17 |