java - Spring 4.0.2中如何在@Scheduled方法中获取当前 session (HttpSession)对象?

标签 java spring-mvc scheduling httpsession spring-scheduled

我的 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/

相关文章:

java - 将 Android 项目导入 Eclipse

spring - 没有@RequestParam,参数绑定(bind)如何/为什么工作?

java - 私有(private) REST API 成熟度级别和额外的复杂性层

java - HttpServerErrorException 是否可以返回 HttpStatus 类中枚举器指定的代码以外的 HttpStatus 代码?

django - 在 django 应用程序中运行周期性任务的清晰分步过程

Linux内核函数set_user_nice

linux - 线程调用系统调用时的上下文切换

java - 在Android中,通过Intent传递子类的实例后,无法从父类(super class)方法中获取值

java - Kotlin 泛型 Array<T> 结果为 "Cannot use T as a reified type parameter. Use a class instead"但 List<T> 没有

java.sql.SQLException : An undefined column name was detected.( hibernate )