Я использую SimpleMappingExceptionResolver, который отправляет все исключения в представление, где оно красиво отображается. Это работает за исключением одного случая:
Если пользователь запрашивает страницу, а затем отправляет и «Прервать» (, я не знаю точно, как это работает, но я заметил, что, если я нажимаю кнопку отправки формы HTTP-сообщения очень быстро и часто Firefox 7 как-то уведомляет сервер, который больше не заинтересован в результате. ) Затем Tomcat 6 поднимает ClientAbortException
при попытке рендеринга страницы или пишет http-ответ в любом виде.
Теперь начинается проблема: SimpleMappingExceptionResolver
"ловит" исключение и пытается его обработать красиво на html-странице. Это затем вызывает в потоке уже закрытое исключение, которое загрязняет файл журнала. (java.lang.IllegalStateException: getOutputStream() has already been called for this response
)
Что я сделал, так это зарегистрировал пустую страницу JSP для «ClientAbortException». Но я чувствую, что это Хак. С другой стороны, я полагаю, что это не столь необычная проблема, потому что я ожидаю ее почти в каждом весеннем приложении, которое отображает все исключения. Так есть ли у кого-нибудь опыт с этой проблемой, или у него есть идея не столь хакерского решения?
<bean
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"
p:defaultErrorView="uncaughtException">
<property name="exceptionMappings">
<props>
<prop key=".MissingServletRequestParameterException">
resourceNotFound
</prop>
<prop key=".ClientAbortException">nothing</prop>
</props>
</property>
</bean>