请您帮我提醒Java中的日历,它将独立于服务器。我的意思是,重新启动服务器后,应该执行提醒操作,例如发送电子邮件。 我已经看过this了。但据说使用Timer。据我所知,这取决于服务器的状态。我还尝试使用注释@Startup创建ejb,但问题是,TimedObject接口没有任何其他字段用于存储我想要呈现的数据,只有EJBTimeout(Timer t)方法。同样使用EJB,它只为每个用户创建一个提醒,但不为每个约会创建。
如果我错了,你能否纠正我。
答案 0 :(得分:0)
如果您只想依赖EJB工具,那么您希望使用EJB计时器。 EJB计时器在服务器重新启动时是持久的,并且可以动态创建。他们依靠会话Bean来承担处理超时的角色(在这种情况下,发送电子邮件)。
EJB计时器的好处在于它们是持久的(除非另有选择,否则可以使它们不是持久的),并且它们在服务器重启后仍然存在。如果服务器在服务器重新启动时关闭,它们甚至会终止。
EJB计时器的黑暗面是重新部署应用程序时持久计时器丢失。因此,如果您更改某些需要再次部署应用程序的逻辑或不相关的内容,则会重置计时器(因为它们绑定到应用程序)。
这方面可能会让他们感到沮丧,因为您需要自己的基础架构来重新启动重新部署服务器时丢失的计时器。这并不困难,基本上您将EJB计时器的阴影存储到您自己的数据库表中,并且当您的系统部署启动事件时,将此表与容器知道的现有计时器同步。然后,您的EJB超时方法在任务完成时从DB中删除计时器。
这并不困难,但它很烦人,并且首先捕获定时器数据是整个“稍后做某事”风格的85%。但事实就是如此。
您还可以查看Quartz,这是一个在Servlet层中启动的流行调度框架。