gpt4 book ai didi

java - 如何从 SimpleMappingExceptionResolver 中排除 ClientAbortException

转载 作者:IT老高 更新时间:2023-10-28 13:57:21 34 4
gpt4 key购买 nike

我正在使用一个 SimpleMappingExceptionResolver,它将所有异常发送到一个很好地呈现它的 View 。除了一种情况外,这有效:如果用户请求一个页面,然后发送并“中止”(我不知道它是如何工作的,但我注意到如果我非常快地单击 HTTP 发布表单提交按钮并且通常 Firefox 7 会以某种方式通知它不再对结果感兴趣的服务器。) 然后 Tomcat 6 升起 ClientAbortException当尝试呈现页面或以任何形式编写 http 响应时。

现在开始麻烦了:SimpleMappingExceptionResolver “捕获”异常并尝试将其很好地 呈现到 html 页面。然后,这会导致 Stream 已关闭异常,从而污染日志文件。 (java.lang.IllegalStateException: getOutputStream() 已为此响应调用)

我所做的是为“ClientAbortException”注册一个空的jsp页面。但我觉得这是一个黑客。另一方面,我想这并不是一个非常罕见的问题,因为我预计几乎每个 Spring 应用程序都会呈现所有异常。那么有没有人有解决这个问题的经验,或者有一个不那么老套的解决方案的想法?

<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>

最佳答案

扩展SimpleMappingExceptionResolver,重写doResolveException()方法,如果异常名称为ClientAbortExceptionresponse.isCommitted() 返回 null 而不是返回 super.doResolveException()

关于java - 如何从 SimpleMappingExceptionResolver 中排除 ClientAbortException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8271843/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com