如何在Tomcat启动时安排cron4j?

时间:2018-11-30 07:01:56

标签: java tomcat cron4j

我希望我的Web服务器(Tomcat 8.5)在运行时每天自动发送一次电子邮件。因此,我在web.xml中配置了一个StartUp-Servlet以在服务器启动时运行。在日食中测试时,出现错误Starting Tomcat v8.5 Server at Localhost has encountered a problem. Server Tomcat was unable to start within 45 seconds...

我知道,这是在eclipse中发生的事情,但是启动似乎还没有完成,并且我的服务器在忙着启动时将永远无法执行其他任务...我希望它实例化调度程序,但随后完成启动并在后台运行调度程序。

在服务器启动期间触发调度程序的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我找到了一种方法。我改为实现ServletContextListener。 web.xml看起来像这样:

<listener>
    <listener-class>servlets.SendEmailJob</listener-class>
</listener>

和班级:

public class SendEmailJob implements ServletContextListener {
    Scheduler scheduler = new Scheduler();

    public void contextInitialized(ServletContextEvent event) {
        scheduler.schedule("* * * * *", new Runnable() {
            public void run() {
                //sendEmail() - time pattern not specified yet
            }
        });
        // Starts the scheduler.
        scheduler.start();
    }

    public void contextDestroyed(ServletContextEvent event) {
        scheduler.stop();
        scheduler = null;
    }
}