ClientAbortException: java.io.IOException-bei großen Datei-upload
Ich habe eine Spring-Anwendung, wo uploads von großen Dateien (mehr als 300 mb). In den lokalen, es ist einwandfrei in Ordnung. Jedoch, wenn ich versuche, mit meiner Anwendung im Leben, die meisten der Zeit, es schlägt fehl (einige Male wird es gelingen, obwohl). Hier der log aus der Konsole. Kann mir jemand helfen, wie man loswerden der Fehler. Ich bin mit JQuery-Chunk-Datei-upload-Funktion. Server ist Tomcat 6.
17:02:28,395 DEBUG SessionFactoryUtils:793 - Closing Hibernate Session
File Path:/home/borneind/ty/uploads/7397758850/2190167412/1366559675908_06 - Mergel - Mergedelica.wav
17:02:31,036 DEBUG ExceptionHandlerExceptionResolver:132 - Resolving exception from handler [public void com.jmacksoft.common.controller.TranceController.getDocumentFileContent(javax.servlet.http.HttpServletResponse,javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,java.lang.String,java.lang.String) throws java.io.IOException]: ClientAbortException: java.io.IOException
17:02:31,037 DEBUG ResponseStatusExceptionResolver:132 - Resolving exception from handler [public void com.jmacksoft.common.controller.TranceController.getDocumentFileContent(javax.servlet.http.HttpServletResponse,javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,java.lang.String,java.lang.String) throws java.io.IOException]: ClientAbortException: java.io.IOException
17:02:31,037 DEBUG DefaultHandlerExceptionResolver:132 - Resolving exception from handler [public void com.jmacksoft.common.controller.TranceController.getDocumentFileContent(javax.servlet.http.HttpServletResponse,javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,java.lang.String,java.lang.String) throws java.io.IOException]: ClientAbortException: java.io.IOException
17:02:31,038 DEBUG DispatcherServlet:910 - Could not complete request
ClientAbortException: java.io.IOException
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:358)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:381)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:370)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
at org.springframework.util.FileCopyUtils.copy(FileCopyUtils.java:113)
at com.jmacksoft.common.controller.TranceController.getDocumentFileContent(TranceController.java:603)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
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:175)
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:263)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:852)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:584)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.io.IOException
at org.apache.coyote.http11.InternalAprOutputBuffer.flushBuffer(InternalAprOutputBuffer.java:692)
at org.apache.coyote.http11.InternalAprOutputBuffer$SocketOutputBuffer.doWrite(InternalAprOutputBuffer.java:722)
at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:118)
at org.apache.coyote.http11.InternalAprOutputBuffer.doWrite(InternalAprOutputBuffer.java:528)
at org.apache.coyote.Response.doWrite(Response.java:560)
- Sie können die Timeout-Einstellungen im tomcat-server-Konfigurationen. überprüfen server.xml in conf. Es könnte dein problem lösen. dfault gesetzt zu 6 Sekunden oder soemthing sehr gering. tomcat.apache.org/connectors-doc/generic_howto/timeouts.html
- Ich habe in server.xml die unter Einstellung... <Service name="Catalina"> <Connector port="12307" " protocol="HTTP/1.1" connectionTimeout="0" redirectPort="8443" maxPostSize="0" disableUploadTimeout="true"/>
- haben Sie versucht, eine lareger Nummer? ich weiß, 0 definieren, für immer, aber immer noch versuchen, eine größere Anzahl
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erwachen der zombie basiert auf der Tatsache, dass die Seite aufgerufen wurde über 2000 mal.
Zu spät für den ursprünglichen poster ich bin mir sicher, aber für zukünftige Leser, hier ist Ihre Lösung.
Wenn Sie mit jquery zu setzen müssen Sie einen längeren Zeitlimit-Wert für die asynchrone Anforderung zu vervollständigen. Diese blog-Eintrag bietet eine Methode, dies zu tun. In deinem Fall bist du nicht einloggen, aber das Beispiel sollte Ihnen das geben, was Sie brauchen. Zitat aus dem post...
...Ich empfehle, einen Weg zu finden Zentralisierung dieser Wert eher als besprengen willkürlich während Ihres Skripts. Seien Sie vorsichtig, nicht um einen timeout zu kurz ist stark eingeschränkten Umgebungen. Ihre Entwicklung ist fast immer besser als die Erfahrung in der wildnis.