2014-02-07 5 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() не работает.

EDIT: Я ищу возможность изменять максимальный размер заголовка на уровне индивидуального ответа на основе «некоторого состояния».

+0

Пропустите полезную нагрузку, как тело ответа, а не 'Custom-Header.' – EJP

ответ

0

Вам необходимо изменить maxHttpHeaderSize соединителя HTTP в server.xml, а не код.

См here.

+0

Я не могу изменить глобальные настройки. Я ищу решение на уровне индивидуального ответа. –

1

Сообщение о Заголовок размер, не общий размер буфера. Из Tomcat Configuration Guide section on "The HTTP Connector"

maxHttpHeaderSize

Максимальный размер заголовка запроса и ответа HTTP, указывается в байтах. Если не указано, этот атрибут установлен в 8192 (8 КБ).

+0

Я не могу изменить глобальные настройки. Я ищу решение на уровне индивидуального ответа. –

+1

Серьезно, либо увеличивайте глобальный предел, либо не создавайте более 8 Кбайт заголовков для ответа. –

0

Что вы делаете

Вы устанавливаете размер буфера для writig repsonse тела. Он не имеет ничего общего с заголовками ответов. Это в основном используется для сброса ответов после достижения размера буфера.

Что вам нужно сделать

Вы должны установить maxHttpHeaderSize недвижимость в Tomcat Configuration

+0

Я не могу изменить глобальную настройку. Я ищу решение на уровне индивидуального ответа. –

Смежные вопросы