[英]ServletResponse.setBufferSize doesn't work in Tomcat 7?
我正在使用ServletResponse.setBufferSize增加响应的缓冲区大小,但是Tomcat 7仍然抛出一个异常,即缓冲区大小不够大。 这是Tomcat 7.0.32中的错误吗?
这是我的伪/代码-
@Override
protected void writeInternal(Object o, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
if (some condition)
{
((ServletServerHttpResponse)outputMessage).getServletResponse().setBufferSize(Integer.MAX_VALUE);
outputMessage.getHeaders().set("Custom-Header", gson.toJson(big payload));
}
// ...
这是例外-
org.apache.coyote.http11.HeadersTooLargeException
:尝试将比缓冲区中可用空间更多的数据写入响应标头。 增加连接器上的maxHttpHeaderSize或将较少的数据写入响应标头。
我需要重置缓冲区吗? reset()
无效。
编辑:我正在寻找能够基于“某些条件”在各个响应级别更改最大标头大小的功能。
该消息与报头大小有关,而不是缓冲区总大小。 从“ HTTP连接器”上的《 Tomcat配置指南》部分中
maxHttpHeaderSize
请求和响应HTTP标头的最大大小,以字节为单位指定。 如果未指定,则此属性设置为8192(8 KB)。
您需要在server.xml中而不是代码中修改HTTP连接器的maxHttpHeaderSize。
看这里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.