【问题标题】:How to get current session (HttpSession) object in @Scheduled method in Spring 4.0.2?如何在 Spring 4.0.2 的 @Scheduled 方法中获取当前会话(HttpSession)对象?
【发布时间】:2014-05-04 07:04:29
【问题描述】:

我正在为我的 Web 应用程序使用 Spring 4.0.2。我的 Web 应用程序是关于文件处理的。有一些关于文件的状态,例如“进行中”、“等待中”、“已完成”。一个用户可以完成多个文件,但一次只能完成一个。因此,对于单个用户,一次只有一个文件必须处于“进行中”。现在,我想每 15 分钟检查一次特定文件是否发生了任何事件。如果没有发生任何事件,我想将文件状态从“进行中”更改为“暂停”。所以我尝试在 Spring 中编写调度程序,如下所示。

@Scheduler(fixedDelay = 15*60*1000)
public void checkFrequently()
{
   // here I am doing some operation to check for any event occurred in last 15 min or not.
   // here, I need HttpSession for two purposes. 
   // 1. to get current logged in user
   // 2. to get current file for current user
}

这种方法有没有可能获得会话?如果不可能,有什么替代方案?

【问题讨论】:

  • 你不能。 Session 关联 HTTP 请求,调度器关联时间事件。
  • 好的..但是这个问题的替代方法是什么?

标签: java spring-mvc scheduling httpsession spring-scheduled


【解决方案1】:

这是不可能的。调度程序在应用程序启动时启动,此时没有会话,并在与 servlet 容器分离的线程中运行。
通常,您将以某种形式持久化您希望由调度程序管理的 bean 访问的状态(在数据库、普通文件、队列等中......)

【讨论】:

  • 你能解释一下你的最后一句话吗?
猜你喜欢
  • 2012-03-21
  • 2011-03-23
  • 1970-01-01
  • 2012-01-15
  • 2013-11-16
  • 2013-07-16
  • 1970-01-01
  • 2016-06-09
  • 1970-01-01
相关资源
最近更新 更多