使用调度程序从 Servlet 执行 execute/access 任务

Use Scheduler to execute/access task from Servlet

我想做的事情: 如果我的 Web 应用程序 (tomcat, java) 上的用户执行了一个操作,并且 1 周过去了他再次执行该操作,我想给他发一封电子邮件。 例如,某人在 2015 年 1 月 1 日执行 "like" 然后在 2015 年 1 月 3 日执行另一个 "like",他将在 2015 年 1 月 10 日收到一封电子邮件(前提是他不再执行"like's" 2015 年 1 月 3 日之后)。

执行方式: 最初,我想使用一个简单的 java.util.Timer 对象。 但是,我找不到为这个 Timer 对象引用不同任务的方法。每次用户执行上述操作时,我都需要检查该用户是否已经存在任务,如果存在,我会将其从当前时间重新安排 1 周。但正如我所说,我无法使用计时器对象引用任务。

所以我研究了 cron4j 和 Quartz。 Cron4j 似乎更简单,所以我想使用它。 Cron4j.Scheduler 允许引用任务。 据我所知,我会为整个 Web 应用程序创建一个 cron4j.Scheduler class 实例,然后根据需要为这个调度程序实例 class 安排其他任务。这个对吗? 如果是这样,我将如何执行此操作以便稍后可以从 servlet 访问 Scheduler class 的实例? (我想也许可以将调度程序的一个实例设置为 ServletContext 的一个属性。但是,为此我需要为我的 Web 应用程序执行一次一些 servlet。这是如何完成的?如果是这样,我如何指定servlet 只执行一次?)

我欢迎回答我上面的问题,或提出不同的方法来做我想做的事。

谢谢

我会反过来。如果您存储点赞和点赞的 date/timestamp,则有一个日常工作,即查询所有在超过 7 天内获得最后一个点赞的用户。