使用Scheduler从Servlet

时间:2015-05-31 15:32:23

标签: java servlets timer cron4j

我想做什么: 如果我的Web应用程序(tomcat,java)上的用户执行操作并且在再次执行之前已经过了1周,我想向他发送电子邮件。 例如,有人在2015年1月1日执行“喜欢”,然后在2015年1月3日执行另一个“喜欢”,他将在2015年1月10日收到一封电子邮件(前提是他之后不再执行“喜欢”了2015年1月3日)。

如何执行: 最初,我想使用一个简单的java.util.Timer对象。 但是,我找不到引用此Timer对象的不同任务的方法。每次用户执行所述操作时,我都需要检查该用户是否已经存在任务,如果确实存在,我会从当前时间重新安排一周。但就像我说的那样,我无法用Timer对象引用任务。

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

我欢迎上述问题的任何答案或对我想做的事情的不同方法的建议。

谢谢

1 个答案:

答案 0 :(得分:1)

我会从另一个方向走。如果您存储喜欢的内容,并且日期/时间戳等具有日常工作,则会查询所有超过7天的用户。