0

我正在为我的 Web 应用程序使用 Spring 4.0.2。我的 Web 应用程序是关于文件处理的。有一些关于文件的状态,如“In Progress”、“On Hold”、“Completed”。一个用户可以完成多个文件,但一次只能完成一个。因此,对于单个用户,一次只有一个文件必须处于“进行中”。现在,我想每 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
}

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

4

1 回答 1

2

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

于 2014-05-04T07:09:19.667 回答