用户会话Spring MVC中的后台任务或异步任务

时间:2014-12-22 19:54:40

标签: java spring spring-mvc task

如何在用户会话中实现后台任务,以检查用户是否正在取得进展?当用户花费太长时间时,可以释放保留的资源。

要求是当用户选择预订时,为该用户保留资源,服务器正在等待下一个请求继续。

如果用户未在接下来的60秒内点击继续,服务器应自动释放预留的资源。

2 个答案:

答案 0 :(得分:0)

您可以使用java.util.Timer, java.util.TimerTask来安排和执行取消。另一个流行的调度库是quartz。但这可能是一种过度杀伤。

解决此问题的另一种方法可能是创建一个客户端计时器任务,该任务在某段时间内没有用户交互时会调用服务器的“取消”功能。即使这样,当用户通过关闭浏览器孤立会话时,你也必须有一个服务器进程来清理资源。

您也可以考虑使用session timeout

答案 1 :(得分:0)

好,所以我想出了如何解决方案。

以下是我遵循的步骤

  1. 当收到初始请求并且在发送响应之前没有问题时,在“Entry Time”和“TransactionID”的另一个表中创建一个条目(当资源被保留时将创建事务ID,并将在所有后续请求中使用&# 34。)
  2. 收到“proceedWithReservaration”时删除此记录。
  3. 创建一个调度程序来检查此表,以找出超过60秒的“TransactionID”。
  4. 创建一个异步任务以发送" releaseNotification"请求,以便我们可以并行处理“发布”。