java - Tomcat 服务器上的周期性任务

标签 java mysql tomcat

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

最佳答案

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

我所做的只是创建一个 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

关于java - Tomcat 服务器上的周期性任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47040095/

相关文章:

java - 使用 Tomcat 和 gradle hibernate

java - OpenGL- android 中 glClipPlanef 的问题

java - 多次重复使用同一页面

java - 使用回溯的排列程序在 Ruby 中不起作用

PHP/MySQL 多个子字符串?

java - 迁移到 tomcat 后,将枚举值作为参数从 JSF 页面传递给 bean 方法失败

java - android - 服务需要互联网连接

mysql - 如何在创建查询中将变量设置为表名

MySQL DATETIME 类型输入

java - HttpServlet 抛出的 ServletExceptions 被 Tomcat 记录为 'SEVERE',尽管以推荐的方式处理