java - 如何在 Tomcat 启动时安排 cron4j?

标签 java tomcat cron4j

我希望我的网络服务器 (Tomcat 8.5) 在运行时每天自动发送一次电子邮件。所以我在 web.xml 中配置了一个 StartUp-Servlet 在服务器启动时运行。当我在 eclipse 中测试它时,出现错误 Starting Tomcat v8.5 Server at Localhost has encountered a problem。服务器 Tomcat 无法在 45 秒内启动...

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

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

最佳答案

我找到了一种方法来做到这一点。我改为实现一个 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;
    }
}

关于java - 如何在 Tomcat 启动时安排 cron4j?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53552765/

相关文章:

Java 异常不会抛出

tomcat - 在 ubuntu 中,为每个日期单独生成 tomcat catalina.out 文件

java - 在服务器上使用 SSL 配置 Tomcat

Java cron4j 计划文件

java - 为什么 NetBeans 会警告将 int[] 传递给 vararg?

java - 接口(interface)常量初始化的条件

java - 适用于 Mac OSX Catalina 的 Android studio 3.5 在索引进程中崩溃

tomcat - tomee ExceptionInInitializerError 和 ThreadLocalProxy 在类加载器中不可见

java - 如何按分钟更频繁地安排某事的执行?

java - 使用 cron4j,我有需要单独时间表的单独任务。