2013-06-05 37 views
5

Tôi có một ứng dụng Spring trong đó người dùng tải lên các tệp lớn (hơn 300 mb). Ở địa phương, nó hoạt động hoàn hảo. Tuy nhiên, khi tôi cố gắng sử dụng ứng dụng của tôi trong Live, hầu hết thời gian nó không thành công (một số lần nó được thành công mặc dù). Đây là nhật ký từ bảng điều khiển. Bất cứ ai có thể giúp tôi làm thế nào để thoát khỏi lỗi. Tôi đang sử dụng chức năng tải lên tệp JQuery Chunk. Máy chủ là Tomcat 6.ClientAbortException: java.io.IOException khi tải lên tệp lớn

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) 
+0

bạn có thể đặt cài đặt hết thời gian trong cấu hình máy chủ tomcat. kiểm tra server.xml trong conf. Nó có thể khắc phục vấn đề của bạn. dfault được đặt thành 6 giây hoặc soemthing rất thấp. http://tomcat.apache.org/connectors-doc/generic_howto/timeouts.html – dinesh707

+0

Tôi có trong server.xml cài đặt bên dưới ... Giao thức

+0

bạn đã thử một số lareger chưa? tôi biết 0 sẽ xác định bao giờ, nhưng vẫn thử một số lớn hơn – dinesh707

Trả lời

2

Làm cho zombie dựa trên thực tế là trang đã được xem hơn 2000 lần.
Quá muộn đối với áp phích gốc tôi chắc chắn, nhưng đối với người đọc trong tương lai, đây là giải pháp của bạn.

Nếu bạn đang sử dụng jquery, bạn cần đặt giá trị thời gian chờ lâu hơn cho yêu cầu không đồng bộ của bạn để hoàn tất. Điều này blog entry cung cấp một phương pháp để làm điều này. Trong trường hợp của bạn, bạn không đăng nhập, nhưng ví dụ sẽ cung cấp cho bạn những gì bạn cần. Trích dẫn bài ...

function SuccessFunction(data, status) { 

      var obj = jQuery.parseJSON(data.d); 
      if (obj.Success == “true”) { 
       writeConsole(‘logging in’); 
       $.ajax({ 
        type: “GET”, 
        url: ‘<% Response.Write(url); %>?’ + obj.UserNameAndPassword, 
        dataType: ‘jsonp’, 
        complete: function() { 
         $.mobile.changePage(“#success”, { transition: “fade” }); 
        }, 
        timeout: 5000 // sets timeout to 5 seconds 
       }); 
      } 
      else { 
       $(“#popupFail”).popup(“open”, { transition: “fade” }); 
       writeConsole(‘login failure ‘); 
      } 
      return; 
     } 

... Tôi khuyên bạn nên tìm kiếm một cách để tập trung giá trị này chứ không phải là rắc nó tùy tiện khắp kịch bản của bạn. Hãy cẩn thận không chọn thời gian chờ quá ngắn trong môi trường bị hạn chế. Kinh nghiệm phát triển của bạn hầu như luôn tốt hơn sau đó trải nghiệm trong tự nhiên.

Các vấn đề liên quan