2014-02-07 53 views
3

我正在使用ServletResponse.setBufferSize增加響應的緩衝區大小,但Tomcat 7仍然拋出緩衝區大小不夠大的異常。這是Tomcat 7.0.32中的錯誤嗎?ServletResponse.setBufferSize在Tomcat 7中不起作用?

這裏是我的僞/碼 -

@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()沒有工作。

編輯:我正在尋找能夠根據「某些條件」在個人響應級別更改最大標題大小。

+0

maxHttpHeaderSize屬性傳遞有效載荷爲響應體,而不是'定製Header.' – EJP

回答

0

您需要修改server.xml中的HTTP連接器的maxHttpHeaderSize,而不是代碼。

參見here.

+0

我不能改變的全局設置。我正在尋找個人響應級別的解決方案。 –

1

該消息是約大小,而不是總緩衝器大小。從Tomcat Configuration Guide section on "The HTTP Connector"

maxHttpHeaderSize

請求和響應的HTTP標頭的最大大小,以字節爲單位指定。如果未指定,則此屬性設置爲8192(8 KB)。

+0

我無法更改全局設置。我正在尋找個人響應級別的解決方案。 –

+1

嚴重的是,要麼增加全侷限制,要麼爲響應創建不超過8KB的標頭。 –

0

你正在做

你所設置緩衝區writig repsonse體的大小。它與響應標題無關。一旦達到緩衝區大小,這主要用於清除響應。

你需要做的

什麼,你需要設置Tomcat Configuration

+0

我無法更改全局設置。我正在尋找個人響應級別的解決方案。 –

相關問題