Ral*_*lph 13 java spring tomcat exception-handling
我正在使用SimpleMappingExceptionResolver,它将所有异常发送到一个很好地呈现它的视图.除了一种情况之外,这是有效的:如果用户请求一个页面,然后发送并"中止"(我不确切知道它是如何工作的,但我注意到如果我非常快速地点击HTTP帖子表单提交按钮而且经常是Firefox 7以某种方式通知服务器它不再对结果感兴趣.)然后ClientAbortException当一个人尝试渲染页面时,Tomcat 6会上升,或者写出任何类型的http响应.
现在开始麻烦:SimpleMappingExceptionResolver"捕获"异常并尝试将其很好地呈现给html页面.这会导致Stream已经关闭的异常,这会污染日志文件.(java.lang.IllegalStateException: getOutputStream() has already been called for this response)
我所做的就是为"ClientAbortException"注册一个空的jsp页面.但我觉得这是一个哈克.另一方面,我想这不是一个非常不常见的问题,因为我会期望它几乎在每个春季应用程序中呈现所有异常.那么有没有人有这个问题的经验,或者有一个不那么hacky解决方案的想法?
<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>
Run Code Online (Sandbox Code Playgroud)
jos*_*fin 10
扩展SimpleMappingExceptionResolver,覆盖doResolveException()方法,如果异常名称是ClientAbortException并response.isCommitted()返回null而不是返回super.doResolveException().
| 归档时间: |
|
| 查看次数: |
3557 次 |
| 最近记录: |