【发布时间】:2015-08-14 01:38:27
【问题描述】:
我想做的事: 如果我的 Web 应用程序(tomcat、java)上的用户执行了一个操作,并且在他再次执行之前经过了 1 周,我想给他发送一封电子邮件。 例如,某人在 2015 年 1 月 1 日执行了“赞”,然后在 2015 年 1 月 3 日执行了另一个“赞”,他将在 2015 年 1 月 10 日收到一封电子邮件(前提是他在之后不再执行任何“赞” 2015 年 1 月 3 日)。
如何执行: 最初,我想使用一个简单的 java.util.Timer 对象。 但是,我找不到为此 Timer 对象引用不同任务的方法。每次用户执行所述操作时,我都需要检查该用户是否已经存在任务,如果存在,我会从当前时间重新安排 1 周。但就像我说的,我无法使用 Timer 对象引用任务。
所以我研究了 cron4j 和 Quartz。 Cron4j 似乎更简单,所以我想使用它。 Cron4j.Scheduler 允许引用任务。 据我了解,我会为整个 Web 应用程序创建一个 cron4j.Scheduler 类的实例,然后根据需要为这个 Scheduler 类的一个实例安排其他任务。它是否正确? 如果是这样,我将如何执行此操作以便以后可以从 servlet 访问调度程序类的实例? (我想可能将调度程序的实例设置为 ServletContext 的属性。但是,为此我需要为每个 Web 应用程序执行一次 servlet。这是如何完成的?如果是,我该如何指定servlet 只执行一次?)
我欢迎任何对上述问题的回答或对我想做的不同方法的建议。
谢谢
【问题讨论】:
标签: java servlets timer cron4j