【问题标题】:HttpServletResponse : How to determine if the underlying connection is still open?HttpServletResponse:如何确定底层连接是否仍然打开?
【发布时间】:2011-12-30 10:59:08
【问题描述】:

事情是这样的:在 Tomcat 6 上运行的基于 Web 的应用程序。客户端向服务器发送请求,服务器进行一些处理,重定向到第 3 方 URL,然后再次进行一些处理。

在进行重定向之前,我想知道客户端连接是否仍然打开(这样我可以防止第二次处理)。我知道 sendRedirect 会抛出 IOException 和 IllegalStateException 并且可以在重定向失败的情况下进行处理。

我还尝试从响应中获取输出流并将任何垃圾字符写入流中。但是没有用(即使我在调用请求后从 LAN 中删除了客户端计算机)

我想知道 - 有什么方法可以确定客户端和服务器之间的连接是否仍处于活动状态?

【问题讨论】:

标签: java jakarta-ee servlets


【解决方案1】:

老问题,但我正在处理类似的问题并找到了解决方案。

只有当服务器向客户端发送回一些东西并且失败时,才能检测到中止的 HTTP 连接。要强制将数据发送到客户端,您必须在 HttpServletResponse 上调用 flushBuffer()。如果连接被中止,则会抛出ClientAbortException

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2015-08-27
    • 2013-04-13
    • 2015-12-01
    • 2012-08-28
    相关资源
    最近更新 更多