2015-12-02 12 views
5

पर लिखने में त्रुटि हमने हाल ही में जेआरई 1.7.0_17/टॉमकैट 7.0.3 9 पर जेआरई 1.8 पर चल रहे एक जेएक्स-डब्ल्यूएस webservice के तकनीकी ढेर को अद्यतन किया है। 0_66/टॉमकैट 8.0.28। वेब ऐप विंडोज सर्वर 2012 पर चलता है। वेब सेवा जेएक्स-डब्ल्यूएस के लिए मेट्रो कार्यान्वयन का उपयोग करती है। ग्राहक जेआरई 7 और जेएक्स-डब्ल्यूएस क्लाइंट एपीआई का उपयोग जेआरई में निर्मित विभिन्न विंडोज संस्करणों पर चलते हैं। Webservice का उपयोग क्लाइंट मशीनों से webservice पर फ़ाइलों को अपलोड करने के लिए किया जाता है जो उन्हें दस्तावेज़ प्रबंधन प्रणाली में सहेजता है। कार्यान्वयन जावा 7/टॉमकैट 7 के तहत काफी बेकार ढंग से काम करता था, लेकिन हमने जावा 8/टॉमकैट 8 सर्वर पक्ष के तहत चल रहे बड़े पेलोड (2 एमबी या बड़े) के साथ एक समस्या में भाग लिया है। क्लाइंट से स्टैक ट्रेस है:javax.xml.ws.WebServiceException: java.io.IOException: सर्वर टोमकैट 8

12/02/2015 14:12:38.699 [AWT-EventQueue-0] ERROR DocumentImporterMainWindow$SwingAction.importDocument: Unexpected Problem trying to call the CustomerOrderDMService 
javax.xml.ws.WebServiceException: java.io.IOException: Error writing to server 
    at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.readResponseCodeAndMessage(Unknown Source) 
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.createResponsePacket(Unknown Source) 
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(Unknown Source) 
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(Unknown Source) 
    at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(Unknown Source) 
    at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Unknown Source) 
    at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Unknown Source) 
    at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Unknown Source) 
    at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Unknown Source) 
    at com.sun.xml.internal.ws.client.Stub.process(Unknown Source) 
    at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(Unknown Source) 
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source) 
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source) 
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(Unknown Source) 
    at com.sun.proxy.$Proxy30.importDocument(Unknown Source) 
    at com.mycompany.documentimporter.DocumentImporterMainWindow$SwingAction.importDocument(DocumentImporterMainWindow.java:681) 
    at com.mycompany.documentimporter.DocumentImporterMainWindow$SwingAction.actionPerformed(DocumentImporterMainWindow.java:612) 
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) 
    at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source) 
    at java.awt.Component.processMouseEvent(Unknown Source) 
    at javax.swing.JComponent.processMouseEvent(Unknown Source) 
    at java.awt.Component.processEvent(Unknown Source) 
    at java.awt.Container.processEvent(Unknown Source) 
    at java.awt.Component.dispatchEventImpl(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Window.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$500(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue$4.run(Unknown Source) 
    at java.awt.EventQueue$4.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 
Caused by: java.io.IOException: Error writing to server 
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) 
    at java.net.HttpURLConnection.getResponseCode(Unknown Source) 
    ... 54 more 

दुर्भाग्यवश किसी भी टोमकैट लॉग में सर्वर पक्ष को लॉग इन नहीं किया गया है। मैंने सफलता के बिना समस्या का समाधान खोजने के लिए दिन बिताए हैं। मैंने -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true (क्लाइंट) और -Dcom.sun.xml.ws.transport.http.HttpAdapter.dump=true (सर्वर) जावा सिस्टम गुणों का उपयोग करते हुए SOAP अनुरोध/प्रतिक्रिया क्लाइंट पक्ष और सर्वर पक्ष को लॉगिंग करने जैसे विभिन्न तरीकों के माध्यम से समस्या को डीबग करने का प्रयास किया है, लेकिन जब त्रुटि होती है तो केवल ग्राहक पक्ष अनुरोध होता है लॉग किया जा रहा:

---[HTTP request - http://localhost:8080/CustomerOrderDM/services/CustomerOrderDMService]--- 
Accept: text/xml, multipart/related 
Content-Type: text/xml; charset=utf-8 
SOAPAction: "http://www.mycompany.com/CustomerOrderDMService/ImportDocument" 
User-Agent: JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e 
<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns3:ImportDocumentRequestDTO xmlns:ns3="http://www.mycompany.com/CustomerOrderDMService/" xmlns:ns2="http://www.mycompany.com/CustomerOrderDMService"><ns2:QuoteNumber>A000049</ns2:QuoteNumber><ns2:SerialNumber>STOCK</ns2:SerialNumber><ns2:DocumentType>Email</ns2:DocumentType><ns2:Description></ns2:Description><ns2:DocumentContents> **some base64 encoded byte[] of the file contents being uploaded** 

Message has been truncated 
use com.sun.xml.internal.ws.transport.http.HttpAdapter.dumpTreshold property to increase the amount of printed part of the message 
-------------------- 

के बाद से ही ग्राहक के पक्ष अनुरोध लॉग हो रहा है हम आशा करते हैं सर्वर पूरी तरह से अनुरोध संसाधित नहीं है और यह अपवाद ब्लॉक किसी तरह का होती जा रही है, लेकिन सर्वर लॉग फाइल करने के लिए लॉग इन करने के लिए कुछ भी बिना हम समस्या को गोली मारने में परेशानी हो रही है।

हमने ग्रहण में निर्मित मॉनिटरिंग जैसे प्रॉक्सी का उपयोग करने का प्रयास किया है, लेकिन एक बार फिर मैं केवल क्लाइंट से अनुरोध देखता हूं और सर्वर से कोई प्रतिक्रिया नहीं देता (जब क्लाइंट विफल होने वाले बड़े अनुरोध भेजता है, छोटे अनुरोध लॉग अनुरोध/ग्राहक और सर्वर दोनों पर प्रतिक्रिया)। डिबगिंग के लिए अन्य सुझावों की सराहना की जाएगी।

हम भी जावा और बिलाव के विभिन्न संयोजनों की कोशिश की है:

  • बिलाव 7/जावा 7 = काम करता है
  • बिलाव 7/जावा 8 = काम करता है
  • बिलाव 8/जावा 7 = करता नहीं काम
  • बिलाव 8/जावा 8 = काम नहीं करता

यह लगता है कि इस मुद्दे को बिलाव 8. या तो कुछ के साथ है Tomca में बदल गया था हमें ले जाता है टी 8 और अब हमें कुछ नई टाइमआउट/पेलोड सेटिंग्स सेट करने की आवश्यकता है या टॉमकैट 8 में इस विशिष्ट समस्या से संबंधित एक बग है।

हम जैसे maxPostSize="-1", connectionTimeout="-1", disableUploadTimeout="true", connectionUploadTimeout="-1", keepAliveTimeout="-1" बिलाव कनेक्टर सेटिंग में से कुछ की स्थापना की कोशिश की है, लेकिन इनमें से कोई भी काम किया है और ईमानदारी से जानते हुए भी क्या सर्वर साइड पर जा रहा है बिना अंधेरे में एक शॉट की तरह लग रहा है।

हमने मेट्रो जार सर्वर की ओर से हालिया रिलीज (jaxws-ri-2.2.10) के साथ-साथ जावा 8 का उपयोग कर क्लाइंट चलाने की कोशिश की है। दुर्भाग्यवश इनमें से कोई भी काम नहीं करता है। किसी भी तरह की सहायता का स्वागत किया जाएगा।

उत्तर

1

ऐसा लगता है कि बिलाव 7.0.55 शामिल फिक्स:

CVE-2014-0230: 
Add a new limit, defaulting to 2MB, for the amount of data Tomcat will swallow for an aborted upload. The limit is configurable by maxSwallowSize attribute of an HTTP connector. 

मेरे मुद्दों maxSwallowSize = सेट करके किया गया था "- 1" बिल्ला सर्वर में <Connector> विन्यास पर स्थापित करने के लिए सर्वर .xml।

मैं मार्क थॉमस और क्रिस स्कल्ट्ज को उनकी सहायता के लिए टॉमकैट उपयोगकर्ताओं की मेलिंग सूची से धन्यवाद देना चाहता हूं। मेलिंग सूची में शामिल होने के निर्देशों के लिए here पर क्लिक करें। मैं टॉमकैट समर्थन की तरफ इशारा करने के लिए विनायक को भी धन्यवाद देना चाहूंगा।

+0

आपको उत्तर के रूप में अपना उत्तर स्वीकार करना चाहिए। :) –

+0

maxSwallowSize का क्या अर्थ है? – Nurlan

1

लगता है कि यह टॉमकैट से संबंधित एक बग है। इस मुद्दे को टॉमकैट टीम को पोस्ट करें।

http://tomcat.apache.org/bugreport.html

संबंधित मुद्दे