播放设置maxInitialLineLength不起作用

时间:2016-12-19 18:36:07

标签: scala netty playframework-2.4

我正在开发一个Scala API,可能需要偶尔的GET请求,其中URL超过4kb。我看到我们需要设置play.server.netty.maxInitialLineLength设置,我尝试将其设置为8192(8 kb),但仍然失败:

org.jboss.netty.handler.codec.frame.TooLongFrameException: An HTTP line is larger than 4096 bytes.
    at org.jboss.netty.handler.codec.http.HttpMessageDecoder.readLine(HttpMessageDecoder.java:670) ~[netty-3.10.5.Final.jar:na]
    at org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:184) ~[netty-3.10.5.Final.jar:na]
    at org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:102) ~[netty-3.10.5.Final.jar:na]
    at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:500) ~[netty-3.10.5.Final.jar:na]
    at org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:485) ~[netty-3.10.5.Final.jar:na]
    at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) ~[netty-3.10.5.Final.jar:na]
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) [netty-3.10.5.Final.jar:na]
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) [netty-3.10.5.Final.jar:na]
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) [netty-3.10.5.Final.jar:na]
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) [netty-3.10.5.Final.jar:na]

我们正在进行游戏2.4.8。有什么我想念的吗?

1 个答案:

答案 0 :(得分:0)

我假设你在本地进行测试并使用run命令开始播放。

执行此操作时,无法应用application.conf中的HTTP服务器设置,因为在读取application.conf之前正在启动HTTP服务器(另请参阅官方Play documentation)。

您有三种方法可以实现这一目标:

  1. 以生产模式启动应用程序,或
  2. 将配置提供为JVM参数(run -Dplay.server.netty.maxInitialLineLength=8192)或
  3. 修改您的build.sbt(devSettings := Map("play.server.netty.maxInitialLineLength" -> "8192"))。