使用IE8浏览器部署在jboss上的应用程序的ClientAbortException

HKu*_*mar 6 java jboss jsp java-ee

我在Jboss部署的应用程序有以下异常,浏览器是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)
Run Code Online (Sandbox Code Playgroud)

似乎浏览器在服务器将internalError.jsp写入它之前关闭了套接字.请建议如何解决它,或至少我如何隐藏此异常.

谢谢Hikumar

Bal*_*usC 18

你无法解决它.在服务器仍在处理HTTP请求/响应时,您无法控制客户端是按Esc,还是仓促单击其他链接,或关闭浏览器,或让其计算机崩溃等等.

您可以通过全局过滤器(映射/*)来"隐藏"它,它执行以下操作:

try {
    chain.doFilter(request, response);
}
catch (ClientAbortException e) {
    // Ignore.
}
Run Code Online (Sandbox Code Playgroud)

但是,这会在代码中引入servletcontainer-specfic依赖项.有问题的过滤器将导致NoClassDefFoundError不同make的servletcontainer不使用特定于Tomcat的ClientAbortException.您可能希望检查类简单名称.利用它是以下子类的优势IOException:

try {
    chain.doFilter(request, response);
}
catch (IOException e) {
    if (!e.getClass().getSimpleName().equals("ClientAbortException")) {
        throw e;
    }
}
Run Code Online (Sandbox Code Playgroud)