Ответ уже зафиксирован при использовании Spring 3.x в Websphere 8.5

При добавлении/обновлении заголовка ответа после обработки запроса я получаю следующее предупреждение:

com.ibm.ws.webcontainer.srt.SRTServletResponse setHeader SRVE8094W: WARNING: Cannot set header. Response already committed. 

Я пытаюсь манипулировать заголовком, вызывая httpServletResponse.setHeader() или httpServletResponse.addHeader() из фильтра сервлета после filterChain.doFilter() или с помощью перехватчика пружинного кода postHandle.

Я столкнулся с этой проблемой при запуске моего веб-приложения с использованием spring 3.x в websphere 8.5.

Проблема не воспроизводится на tomcat 7.0, поэтому я предполагаю, что это связано с Websphere. Проблема не воспроизводится в чистом приложении сервлета, поэтому я предполагаю, что она связана с Spring.

Я знаком с

ShallowEtagHeaderFilter не работает на сервере приложений WAS8

и с

Невозможно установить заголовок в JSP. Ответ уже принят

но я ищу "более чистое" решение.

Может ли кто-нибудь помочь мне в этом?


person Oren Ezer    schedule 14.08.2013    source источник
comment
Вы можете изменить свой фильтр, чтобы обернуть объект HttpServletResponse своим собственным, который не очищает заголовки и OutputStream до определенного времени, например. когда ваш фильтр вернется из doFilter().   -  person Sotirios Delimanolis    schedule 15.08.2013
comment
Спасибо, но в настоящее время я не ищу обходной путь, и, поскольку я думаю, что это проблема Spring-Websphere, я все еще надеюсь, что для этого есть решение.   -  person Oren Ezer    schedule 15.08.2013
comment
Разве вы не можете установить заголовок перед doFilter()?   -  person Sotirios Delimanolis    schedule 15.08.2013
comment
Я бы не спрашивал, если бы мог... :-)   -  person Oren Ezer    schedule 15.08.2013
comment
У меня такая же проблема на Tomcat 7   -  person MounirReg    schedule 02.07.2014


Ответы (1)


Websphere строго следует стандарту J2EE, поэтому все, что работает в Tomcat, не обязательно должно работать в Websphere. В моем проекте я получил много исключений/ошибок, которые характерны для Websphere, но прекрасно работают в Tomcat. Я предлагаю вам установить заголовок в контроллере. Еще один вариант — не сбрасывать поток вывода в контроллер (если вы сделали это явно).

person Balasubramanian Jayaraman    schedule 19.11.2013