【问题标题】:What does the exception "javax.servlet.jsp.JspException: Broken pipe" signify?异常“javax.servlet.jsp.JspException: Broken pipe”意味着什么?
【发布时间】:2011-02-16 01:27:11
【问题描述】:
我收到以下错误:
javax.servlet.jsp.JspException:管道损坏
现在我已经看到有关套接字异常的问题/答案,但这个错误来自不同的包。非常感谢任何帮助。
顺便说一句,我在 struts Web 应用程序 Weblogic Node 日志中看到了很多这些错误,我认为这与最终用户在页面重新加载/执行下一步之前关闭他们的 Web 浏览器有关(数据库事务需要相当需要一点时间来执行,从 30 秒到 4 分钟不等)。
【问题讨论】:
标签:
java
jsp
struts
exception
【解决方案1】:
当用户点击停止,或注销,或以其他方式过早中止连接时发生,我们可以忽略此异常。
【解决方案2】:
我认为这与最终用户在页面重新加载/执行下一步之前关闭他们的网络浏览器有关
你完全正确。当客户端通过导航离开、关闭选项卡/窗口、刷新请求等请求仍在运行时,将引发此异常。换句话说,客户端突然关闭了连接,服务器端无法再写入/刷新任何字节。它通常以IOException 作为根本原因,通常是 servletcontainer 特定子类的味道,例如在 Tomcat 和克隆的情况下ClientAbortException。如果您调查服务器日志中的整个堆栈跟踪,您会在底部某处找到它。
【解决方案3】:
HTTPRequest 由一系列 servlet 处理,这些 servlet 使用管道相互连接。当浏览器放弃连接并且套接字关闭时,这将被 servlet 链接管理层捕获。 servlet 可能间接捕获了套接字关闭异常并将其视为损坏的管道。查看任何包装的异常以了解更多详细信息。
【解决方案4】:
我确信底层包在内部使用管道将结果从 a 传输到 b。现在 B(ServletOutputStream)关闭,并且管道的另一端通过抛出此异常来通知这一点。