Java ServletResponse.setBufferSize不';你不能在Tomcat7中工作吗?
我正在使用ServletResponse.setBufferSize增加响应的缓冲区大小,但是Tomcat7仍然抛出一个异常,即缓冲区大小不够大。这是Tomcat 7.0.32中的一个bug吗 这是我的伪代码-Java ServletResponse.setBufferSize不';你不能在Tomcat7中工作吗?,java,tomcat,servlets,tomcat7,Java,Tomcat,Servlets,Tomcat7,我正在使用ServletResponse.setBufferSize增加响应的缓冲区大小,但是Tomcat7仍然抛出一个异常,即缓冲区大小不够大。这是Tomcat 7.0.32中的一个bug吗 这是我的伪代码- @Override protected void writeInternal(Object o, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
@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或在响应头中写入较少的数据
我需要重置缓冲区吗<代码>重置()不起作用
编辑:我希望能够根据“某些条件”更改单个响应级别的最大头大小。您需要修改server.xml中HTTP连接器的maxHttpHeaderSize,而不是代码 请参见消息是关于头大小,而不是缓冲区总大小。从 maxHttpHeaderSize 请求和响应HTTP标头的最大大小,以字节为单位指定。如果未指定,则此属性设置为8192(8 KB)
你在做什么 您正在为writig repsonse body设置缓冲区的大小。它与响应头无关。这主要用于达到缓冲区大小后刷新响应 你需要做什么
您需要在中设置
maxHttpHeaderSize
属性,我无法更改全局设置。我正在寻找单个响应级别的解决方案。说真的,要么增加全局限制,要么为响应创建不超过8KB的标题。我无法更改全局设置。我正在寻找单个响应级别的解决方案。将有效负载作为响应主体传递,而不是作为自定义标题传递。
我无法更改全局设置。我正在寻找个人响应级别的解决方案。