java स्प्रिंग-डब्लूएस- टंक्रीट से अनुरोध सेवा सेवा




web-services spring (3)

मैंने एक निश्चित स्प्रिंग-वाईएस सेवा लागू की है और जब मैंने स्प्रिंग वेबपैक्चर 1 (टोमैक 6.0.32 पर चल रहा है) में एक साबुन संदेश भेजा है:

निवेदन:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:gen="http://www.foo.com/bar/webservice/generated">
   <soapenv:Header/>
   <soapenv:Body>
      <gen:GetAllPanelWSRequest/>
   </soapenv:Body>
</soapenv:Envelope>

प्रतिक्रिया

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <SOAP-ENV:Body>
      <ns2:GetAllPanelWSResponse xmlns:ns2="http://www.foo.com/bar/webservice/generated">
         <ns2:PanelWS ns2:Id="5">
            <ns2:name>all</ns2:name>
            <ns2:code>all</ns2:code>
         </ns2:PanelWS>
         <ns2:PanelWS ns2:Id="9">
            <ns2:name>test</ns2:name>
            <ns2:code>test1</ns2:code>
         </ns2:PanelWS>         
      </ns2:GetAllPanelWSResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

अब तक कोई समस्या नहीं है वेबपंप्लिक्शन 2 से (स्प्रिंग एमवीसी इत्यादि का उपयोग न करें।) मैंने एक फ़ंक्शन बनाया और जब मैं यह फ़ंक्शन चलाता हूं तो यह काम करता है:

Main.java :

...
public class Main {
    public static void main(String[] args) {
        List<PanelWS> panelWSs = CallServices.getPanelWSs();
        for (PanelWS p : panelWSs) {
            System.out.println("\t" + makeString(p));
        }
    }
...

CallServices.java

public static List<PanelWS> getPanelWSs() {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        PanelClient client = (PanelClient) ctx.getBean("client");
        PanelWS panelWS = null;

        // Get all panelWS
        System.out.println("Get all panels...");
        List<PanelWS> panelWSs = client.getAllPanelWS();
        return panelWSs;
    }

आउटपुट:

Get all panels...
    [id=5, name=all, code=all]
    [id=9, name=test, code=test1]

तो यह काम करता है महान और के रूप में उम्मीद लेकिन जब मैं फ़ंक्शन कॉल करना चाहता हूं

    <%
        List<PanelWS> panelWSs = CallServices.getPanelWSs();
    %>

एक जेएसपी (एक ही बिलाव सर्वर पर रननिंग) या एक साधारण वर्ग के भीतर मुझे निम्न त्रुटि मिलती है:

सर्वर:

13-mei-2011 17:57:37 com.sun.xml.internal.messaging.saaj.soap.MessageImpl saveChanges
SEVERE: SAAJ0539: Unable to get header stream in saveChanges
13-mei-2011 17:57:37 com.sun.xml.internal.messaging.saaj.soap.MessageImpl saveChanges
SEVERE: SAAJ0540: Error during saving a multipart message

ग्राहक:

org.springframework.ws.soap.saaj.SaajSoapMessageException: आउटपुटस्ट्रीम को संदेश नहीं लिख सका: एक मल्टीपार्ट संदेश सहेजने में त्रुटि; नेस्टेड अपवाद com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: एक मल्टीपार्ट संदेश सहेजने में त्रुटि

मैं निम्नलिखित जावा संस्करण का उपयोग कर रहा हूं जिसका अर्थ है Myclipse और Tomcat (चालू है):

* जेडीके 1.6.0_13 *

जार:

  • xercesImpl-2.9.1.jar
  • xalan-2.7.1.jar
  • serializer-2.7.1.jar
  • वसंत-WS-1.5.9-all.jar
  • spring.jar (2.5.6)
  • एक्सएमएल-API- 1.3.04.jar
  • एक्सएमएल-API- ext-1.3.04.jar

क्लाइंट का पूर्ण स्टैकट्र्रेस

Message:    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
Error ID:   #9yb3mzb7
Stack trace:    org.springframework.ws.soap.saaj.SaajSoapMessage.writeTo(SaajSoapMessage.java:169)
org.springframework.ws.client.core.WebServiceTemplate.sendRequest(WebServiceTemplate.java:580)
org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:549)
org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:502)
org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:351)
org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:345)
org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:337)
com.foo.bar.webservice.client.PanelMGMClientImpl.getAllPanelWS(PanelMGMClientImpl.java:22)
com.foo.bar.webservice.client.CallServices.getPanelWSs(CallServices.java:22)
org.apache.jsp.workspace.aclusers_jsp._jspService(aclusers_jsp.java:786)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

सर्वर का पूर्ण स्टैक्सट्रेस **

**SEVERE: Servlet.service() for servlet spring-ws threw exception
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:298)
    at com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl.output(EnvelopeImpl.java:309)
    at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getContentAsStream(SOAPPartImpl.java:305)
    at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.getHeaderBytes(MessageImpl.java:947)
    at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:1098)
    at org.springframework.ws.soap.saaj.Saaj13Implementation.writeTo(Saaj13Implementation.java:268)
    at org.springframework.ws.soap.saaj.SaajSoapMessage.writeTo(SaajSoapMessage.java:165)
    at org.springframework.ws.transport.AbstractWebServiceConnection.send(AbstractWebServiceConnection.java:45)
    at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:97)
    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 com.foo.bar.support.gzip.CompressionFilter.doFilter(CompressionFilter.java:30)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:168)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    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:127)
    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:298)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:864)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665)
    at java.lang.Thread.run(Thread.java:619)
16-mei-2011 14:20:12 com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory createEnvelope
SEVERE: SAAJ0511: Unable to create envelope from given source**

**

उम्मीद है कि यह समस्या हल करने के लिए पर्याप्त जानकारी है। मैंने कुछ संदेश और बगों को इस तथ्य की ओर इशारा किया कि मुझे परियोजनाओं से कुछ जार (एक्सलन, एक्सरसइंपल और सीरलाइज़र) को हटाने की जरूरत है और ये जार jdk\lib\endorsed\ -Djava.endorsed.dirs= jdk\lib\endorsed\ फ़ोल्डर में जोड़ें और तर्क को -Djava.endorsed.dirs= : -Djava.endorsed.dirs= । यह काम करता है, लेकिन मैं ऐसा नहीं कर सकता क्योंकि अनुप्रयोग पहले से ही कई सर्वरों पर चल रहा है।

अग्रिम में thx

दूसरा तरीका

क्लाइंट पर अपाचे सीएक्सएफ़ का उपयोग करते समय अब ​​इसका हल किया गया। और सर्वर पर वसंत -1.0.9.9 ... जाहिरा तौर पर स्प्रिंग-वाई जेडीके के साथ बेकार> 1.5


यह स्प्रिंग-डब्ल्यूएस और जावा 6 के साथ एक ज्ञात समस्या है, टिकट SWS-175 देखें । इस टिकट के अनुसार अपने वेबएप वर्गपथ से एक्सलन और ज़ेरिस को हटाने का समाधान है।


हो सकता है कि आपको एक्सरीस -210. एक्स को अपडेट करने पर विचार करना चाहिए, समस्या यह हो सकती है कि jdk6 (rt.jar) में एक com.sun.org.apache.xerces पैकेज है जिसमें एक jaxp 1.4 कार्यान्वयन है, ऐसा एक्सरेसेस करता है 2.10+:

"इसमें जेएसीएपी 1.4 के पारसर संबंधित भागों का कार्यान्वयन भी शामिल है"

यहाँ से बोली

क्या आप बाइनरी का निर्माण कर रहे हैं जिसमें एक अलग प्रक्रिया के रूप में jsp है या आप सब कुछ एक साथ बना रहे हैं? अगर यह अलग है, तो आप उस पैकेज के बिल्डपाथ से एक्सरीस और एक्सलन को हटाने की कोशिश कर सकते हैं? - यदि आप नहीं कर सकते हैं, तो अपग्रेड करने की कोशिश करें तो शायद यह आपकी मदद करेगी।

फिर भी लगता है कि यह बेहतर होगा कि आप अपने फोन को कॉल कर रहे हैं और आप जेएसपी से उस सेवा को इस्तेमाल कर सकते हैं, इस तरह आप इसे अलग से जांच सकते हैं, लेकिन शायद आप ऐसा किसी कारण से नहीं कर सकते।

यदि ये दोनों विफल हो जाते हैं, तो क्या आप पोस्ट कर सकते हैं) पूर्ण स्टैक्सट्र्रेस बी) कुछ त्रुटियां जो दिखाई देती हैं यदि आप एक्सरीस और एक्सलन सबटाइडर को हटा देते हैं?


क्लाइंट पर अब अपाचे सीएक्सएफ 2.4.0 का इस्तेमाल करने के लिए इसका हल। और सर्वर पर वसंत -1.0.9.9 ... जाहिरा तौर पर स्प्रिंग-वाई जेडीके के साथ बेकार> 1.5





spring-ws