我的 Web 应用程序使用 Spring 4.0.2。我的 Web 应用程序是关于文件处理的。有一些关于文件的状态,例如“进行中”、“暂停”、“已完成”。一名用户可以完成多个文件,但一次只能完成一个。因此,对于单个用户来说,一次只能有一个文件处于“进行中”状态。现在,我想每 15 分钟检查一次特定文件是否发生任何事件。如果没有发生任何事件,我想将文件状态从“进行中”更改为“暂停”。所以我尝试在 Spring 中编写 Scheduler,如下所示。
@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 ?如果不可能,有什么替代方案?
最佳答案
这是不可能的。调度程序在应用程序启动时启动,此时没有 session ,并在与 servlet 容器分离的线程中运行。
通常,您将以某种形式保留您希望通过调度程序管理的 bean 访问的状态(在数据库、普通文件、队列等中)
关于java - Spring 4.0.2中如何在@Scheduled方法中获取当前 session (HttpSession)对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23453556/