PlayFramework 2.2.6:高级HTTP服务器配置maxInitialLineLength

时间:2016-06-19 13:51:01

标签: rest playframework netty playframework-2.2

我们正在尝试将长度大于4096字节的GET和POST请求发送到使用Playframework 2.2.6实现的REST API。

经过长时间的谷歌研究,我们尝试了几乎所有的东西,解决方案似乎是通过播放启动我们的服务器时传递以下两个参数。我们没有收到有关错误参数的错误消息,但是当我们向api发送大量请求时,我们仍然收到错误

TooLongFrameException: An HTTP line is larger than 4096 Bytes

我们通过以下命令运行服务器

<PathToPlay>\play-2.2.6\play.bat -org.jboss.netty.maxHeaderSize:102400 -org.jboss.netty.maxInitialLineLength:102400 run

1 个答案:

答案 0 :(得分:1)

首先,您启动应用程序的路径似乎已关闭。当create a new play application在项目根文件夹中自动创建play.batactivator.bat文件时。因此,无需在项目文件夹外调用特定的播放安装运行时。

可以在play documentation

中找到设置最大正文和标题长度的参数
  

http.netty.maxInitialLineLength    - HTTP请求初始行的最大长度,默认为4096

     

http.netty.maxHeaderSize    - 整个HTTP标头的最大大小,默认为8192

开发模式

开发模式调用

启动应用程序
/path/to/project/play run -Dhttp.netty.maxInitialLineLength=102400 -Dhttp.netty.maxHeaderSize=102400

如果您使用Activator创建项目,请将play替换为activator

生产模式

使用play dist生成published your application之后,您可以通过调用

来设置参数
/path/to/publishedApp/bin/<nameOfApp> -Dhttp.netty.maxInitialLineLength=102400 -Dhttp.netty.maxHeaderSize=102400