我想做的事情:如果我的网络应用程序(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 只执行一次?)
我欢迎对上述问题的任何答案或对不同方法做我想做的事情的建议。
谢谢