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



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

i

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

    curl -v -F "corpusFile=@testfile.tar.gz" -F "description=Large File Test" API_ENDPOINT

当用户尝试上传一个非常大的文件时,例如 大约 3GB .它总是失败返回此错误:-

curl: (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) 在

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

    #Max Length
    parsers.text.maxLength = 10024K
    #Request Timeout
    ws.timeout=1200000

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

3 GB 是一个要上传的大文件,需要时间。因此,请增加 curl 的执行时间。同时添加此参数。

-m 1200000

--max-time 1200000

这里的值以秒为单位。

最新更新