Tomcat服务器上的定期任务

时间:2017-10-31 16:24:08

标签: java mysql tomcat

我需要一个每天晚上在tomcat服务器上运行的java例程。有关如何做到这一点的任何想法? 我尝试在mysql中执行类似事件/日程安排的事情

2 个答案:

答案 0 :(得分:0)

纯java解决方案是使用Quartz。如果不需要纯java,我建议使用简单的ec2:Encrypted作业。

答案 1 :(得分:0)

问这个问题已经有一段时间了,但是最近我遇到了类似的问题,想分享我的解决方案。

我所做的只是创建一个ServletContextListener来创建一个ScheduledExecutorService

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class BackgroundJobManager implements ServletContextListener {    
    private ScheduledExecutorService scheduler;

    @Override
    public void contextInitialized(ServletContextEvent event) {
        this.scheduler = Executors.newSingleThreadScheduledExecutor();
        this.scheduler.scheduleAtFixedRate(new JobClass(), 1, 1, TimeUnit.DAYS);
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        scheduler.shutdownNow();
    }
}

该代码每天执行一次JobClassJobClass必须实现java.lang.Runnable