الربيع + SOAPExceptionImpl: خطأ خلال توفير رسالة متعددة

StackOverflow https://stackoverflow.com/questions/1638986

  •  08-07-2019
  •  | 
  •  

سؤال

ولدي تطبيق ويب الربيع مع صفحات 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>

عند أضفت 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
هل كانت مفيدة؟

المحلول

قد يكون قليلا في وقت متأخر جدا، ولكن يبدو أنك تعاني من ما يوصف <لأ href = "http://static.springsource.org/spring-ws/sites/1.5/faq.html#java- 1.6 "يختلط =" نوفولو noreferrer "> هنا . تنفيذ Xerces في جاوة 6 على ما يبدو غير متوافق مع خدمات ويب الربيع. حلهم هو أن تبدأ العبث مع يبس صادق، ولكن هذا شيء أود أن تجنب. لم أجد حتى الآن حلا جيدا التي لا تنطوي على تعديل تركيب JVM.

وارين Poutsma يبدو أن لديها حل آخر. أزاح كل التبعيات Xerces وزالان. ثم يعمل. إلا إذا كنت بحاجة الميزات من Xerces / زالان في أي جزء آخر من لك تطبيق خدمة الويب التي يمكن أن تحاول ذلك. تذكرة ذات الصلة هي SWS-175 .

نصائح أخرى

وحصلت على نفس العدد الدقيق حيث العميل ربيع خدمة الصابون على شبكة الإنترنت تعمل على ما يرام تماما عند اختباره على قط وكان يعطي الاستثناء التالي عند اختباره على جبوس:

وorg.springframework.ws.soap.saaj.SaajSoapMessageException: Could not write message to OutputStream: Error during saving a multipart message; nested exception is com.sun.xml.messaging.saaj.SOAPExceptionImpl: Error during saving a multipart message

ومع الإجابة المذكورة أعلاه، لقد غيرت ملف جبوس الانتشار هيكل على النحو التالي، وأضاف التنشيط، xerces وزالان في الاستبعاد:

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

وهذا حل المشكلة على جبوس.

وأنا واجهت نفس المشكلة اليوم. جربت كل الطرق الممكنة وأخيرا إزالة Xalan.jar وxerces.jar. في الواقع ليس فقط زالان وXerces JARS لكن XercesImpl.jar وجميع إصدارات زالان JARS كذلك.

والآن انها تعمل بشكل جيد تماما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top