Как запланировать запуск cron4j на Tomcat?

Я хочу, чтобы мой веб-сервер (Tomcat 8.5) автоматически отправлял электронные письма один раз в день во время работы. Поэтому я настроил сервлет запуска в файле web.xml для запуска при запуске сервера. Когда я проверяю это в затмении, я получаю ошибку Starting Tomcat v8.5 Server at Localhost has encountered a problem. Server Tomcat was unable to start within 45 seconds...

Я знаю, это что-то происходит в затмении, но кажется, что запуск не заканчивается, и мой сервер никогда не сможет выполнять другие задачи, так как он занят запуском... Я хочу, чтобы он создал планировщик, но затем закончите запуск и запустите планировщик "в фоновом режиме".

Как правильно запустить планировщик при запуске сервера?

1 ответ

Я нашел способ сделать это. Вместо этого я реализую 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;
    }
}
Другие вопросы по тегам