【问题标题】:Intercept client disconnect with spring?拦截客户端与弹簧断开连接?
【发布时间】:2013-03-14 15:12:07
【问题描述】:

我有一个基于 Spring 的 Web 服务 (JAX-RS),我想拦截客户端断开连接,以防长时间操作正在运行。 例如,当客户端执行 HTTP 调用时,会在服务器上创建大量工作,但随后由于某种原因断开连接(进程终止),我想拦截该断开连接并取消服务器上的工作,因为客户端永远不会得到他等待的结果。

弹簧可以做到吗?

谢谢!

【问题讨论】:

  • 你为什么不开始异步处理并创建一个类似getStatus()的方法,供客户端定期检查状态。应该这样做
  • 我愿意。但我也为客户提供了一种阻止方法。

标签: java web-services spring rest


【解决方案1】:

不,但这与 Spring 无关。

即使您可以直接访问用于 HTTP 传输的套接字,您也无法检测到其他对等方已关闭套接字而不尝试读取或写入它。如果不与任何 HTTP 协议处理程序发生冲突,这是不可能的,显然也尝试使用套接字。

【讨论】:

  • 我认为他可以使用一些基于 window.onbeforeunload 事件的 javascript 解决方法,并使用 ajax 触发所需的停止。
  • 我不同意。可以知道 TCP 套接字是否已正常关闭:en.wikipedia.org/wiki/…(“当一个端点希望停止它的一半连接时,它会发送一个 FIN 数据包,另一端用 ACK 确认。”)跨度>
猜你喜欢
  • 2011-03-12
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 2010-11-01
  • 1970-01-01
  • 2017-07-17
相关资源
最近更新 更多