2014-02-25 3 views
0

클라이언트가 대형 tar.gz 파일을 업로드 할 수있게하는 재생 애플리케이션을 개발 중입니다. ijava.nio.channels.ClosedChannelException Play 애플리케이션에서 excetion 받기

예를 들어, 사용자는이 curl 명령을 사용하여 "testfile.tar.gz"파일 이름을 업로드 할 수 있습니다.

curl -v -F "[email protected]" -F "description=Large File Test" API_ENDPOINT 

사용자가 약 3GB 정도의 대용량 파일을 업로드하려고 할 때. 항상이 오류를 반환 실패 : -

컬 : (55) 실패를 보내기 : 연결이 또한

내가 플레이 서버 로그에서 볼 수있는 예외

중단되었습니다 : -

 java.nio.channels.ClosedChannelException 
    at org.jboss.netty.channel.socket.nio.AbstractNioWorker.cleanUpWriteBuffer(AbstractNioWorker.java:409) 
    at org.jboss.netty.channel.socket.nio.AbstractNioWorker.writeFromUserCode(AbstractNioWorker.java:127) 
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:99) 
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:36) 
    at org.jboss.netty.channel.Channels.write(Channels.java:725) 
    at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.doEncode(OneToOneEncoder.java:71) 
    at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:59) 
    at com.typesafe.netty.http.pipelining.HttpPipeliningHandler.handleDownstream(HttpPipeliningHandler.java:87) 
    at play.core.server.netty.PlayDefaultUpstreamHandler.sendDownstream(PlayDefaultUpstreamHandler.scala:428) 
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$play$core$server$netty$PlayDefaultUpstreamHandler$$handle$1$6$$anonfun$13.apply(PlayDefaultUpstr 

eamHandler.scala를 : 210) at

Play 2.2.1 버전을 사용하고 있습니다. 나는 application.conf에서 최대 길이를 설정하고 요청 시간 제한을 설정하려고했지만 도움이되지 않습니다. 나는 나의 application.conf 파일에 다음 줄을 추가 : -

#Max Length 
    parsers.text.maxLength = 10024K 

    #Request Timeout 
    ws.timeout=1200000 

여기에 무슨 생각을 유사한 문제에 직면하거나이 다른 사람들, 즉 될 경우 큰 도움이됩니다.

답변

0

3GB는 업로드 할 큰 파일이며 시간이 필요합니다. 따라서 컬의 실행 시간을 늘리십시오. 이 매개 변수도 추가하십시오.

-m 1200000 

또는

여기
--max-time 1200000 

값 (초)이다.

관련 문제