在Play应用程序中获取java.nio.channels.ClosedChannelException异常

时间:2014-02-25 09:44:32

标签: java curl playframework-2.0 netty

我正在开发一个允许客户端上传大型tar.gz文件的播放应用程序。我

举个例子,用户可以使用这个curl命令上传文件名“testfile.tar.gz”。

    curl -v -F "corpusFile=@testfile.tar.gz" -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)          在

我正在使用Play 2.2.1版本。我已尝试在application.conf中设置最大长度大小,并设置请求超时但这似乎没有帮助。 我在application.conf文件中添加了以下行: -

    #Max Length
    parsers.text.maxLength = 10024K

    #Request Timeout
    ws.timeout=1200000

如果其他人遇到类似问题或者知道这里发生了什么,那将是很有帮助的。

1 个答案:

答案 0 :(得分:0)

3 GB是要上传的大文件,需要时间。所以增加你的curl的执行时间。也可以添加此参数。

-m 1200000

--max-time 1200000

这里的值以秒为单位。