繁体   English   中英

ServletResponse.setBufferSize在Tomcat 7中不起作用吗?

[英]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)。

你在做什么

您正在设置写回信主体的缓冲区大小。 它与响应头无关。 一旦达到缓冲区大小,这主要用于刷新响应。

你需要做什么

您需要在Tomcat配置中设置maxHttpHeaderSize属性

您需要在server.xml中而不是代码中修改HTTP连接器的maxHttpHeaderSize。

这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM