您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页Tomcat + Spring 处理 “ClientAbortE

Tomcat + Spring 处理 “ClientAbortE

来源:二三娱乐

在Tomcat环境中,如果用户端主动放弃了请求,但是服务端尚未处理完成时,Tomcat会抛出一个"ClientAbortException"的 "IOException"。在Spring MVC框架中如何处理它显得有点棘手,这里将会简单说明如何进行处理。

为什么这个问题会显得比较棘手?

解决方法

我们在"@ExceptionHandler"方法里面捕捉到IOException且内容为"Broken pipe"的异常后,返回一个`null`给Spring框架,这样框架层面就不会进行任何处理,也就不引发"JasperException"了。

```

@ExceptionHandler(IOException.class)

@ResponseStatus(HttpStatus.SERVICE_UNAVAILABLE)  //(1)

public Object exceptionHandler(IOException e, HttpServletRequest request) {

if (StringUtils.containsIgnoreCase(ExceptionUtils.getRootCauseMessage(e), "Broken pipe")) {  //(2)

return null;        //(1)    socket is closed, cannot return any response

} else {

return new HttpEntity<>(e.getMessage());  //(3)

}

}

```

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务