2012-03-20 75 views
4
我有应用程序部署在Jboss的下列异常

部署在JBoss的,浏览器是IE8ClientAbortException与IE8浏览器

2012-03-19 09:17:12,014 WARN [org.apache.catalina.core.ContainerBase.jboss.web].   [localhost]] Exception Processing ErrorPage[errorCode=404, location=/internalError.jsp] 
ClientAbortException: java.net.SocketException: Broken pipe 
    at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:327) 

看来,浏览器关闭套接字之前服务器写入internalError.jsp它。 请建议如何解决这个问题,或者至少我可以隐藏这个异常。

感谢 Hikumar

+0

习惯了那些例外;它们很普遍,并且不可避免地提供了足够的流量。 – skaffman 2012-03-20 14:41:13

回答

17

你解决不了。您无法控制客户端是否按Esc,或者急于单击不同的链接,或关闭浏览器,或者在您的服务器仍在处理HTTP请求/响应时使其计算机崩溃等等。

您可以“隐藏”它由一个全球性的过滤器(映射/*),它确实是这样的:

try { 
    chain.doFilter(request, response); 
} 
catch (ClientAbortException e) { 
    // Ignore. 
} 

然而,这带来了代码中的servletcontainer-specfic依赖。有问题的过滤器将导致NoClassDefFoundError在不同品牌的servletcontainer上,而该品牌不使用特定的Tomcat ClientAbortException。您可能想要检查课程简单名称。利用它的一个子类IOException的优势:

try { 
    chain.doFilter(request, response); 
} 
catch (IOException e) { 
    if (!e.getClass().getSimpleName().equals("ClientAbortException")) { 
     throw e; 
    } 
} 
+0

它即使没有按停止或关闭浏览器,或急于点击不同的链接,可能是与Internet Explorer的东西,我会尝试你的解决方案,但如果你有任何其他解决方案,只需要很少的变化,即一些配置等,请分享谢谢 – HKumar 2012-03-20 17:54:12

+1

是否存在引发ClientAbortException的实例,您不希望忽略它?也就是说,至少log.debug或log.info它会是个好主意吗? – bphilipnyc 2015-07-20 01:45:22