第一步,下载Quartz。(http://www.quartz-scheduler.org/)
quartz-2.3.0是最新的文档版本。
第二步,解压文件,找到对应项目数据库的SQL脚本。SQL脚本位于 /src/org/quartz/impl/jdbcjobstore文件夹下,找到对应的脚本在数据库里面跑一下,会创建以quartz为开头的共7个数据库表。
第三步,jfinal项目导入quartz.2.2.3的jar包。由于项目是maven项目,直接在pom.xml配置下依赖即可。
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
</dependency>
第四步,封装Quartz常用API。
/**
* 定时任务管理器
* 可用于动态添加/移除/停止定时任务,方便调控
* @author rocky
* @date 2019/9/9 12:50
*/
public class QuartzManager {
private static final Logger log = LoggerFactory.getLogger(QuartzManager.class);
/** 调度器 */
private static Scheduler scheduler;
/**
* 初始化
*/
private static void init() throws SchedulerException {
log.info("QuartzManager init");
try {
scheduler = StdSchedulerFactory.getDefaultScheduler();
} catch (SchedulerException ex) {
log.error("QuartzManager init failed", ex);
throw ex;
}
}
/**
* 启动
*/
public static void start() throws SchedulerException {
log.info("QuartzManager start");
if (scheduler == null) {
init();
}
try {
if (!scheduler.isStarted()) {
scheduler.start();
}
} catch (SchedulerException ex) {
log.error("QuartzManager start failed", ex);
throw ex;
}
}
/**
* 停止
*/
public static void stop() throws SchedulerException {
log.info("QuartzManager stop");
if (scheduler == null) {
throw new NullPointerException("You can't stop this scheduler because this scheduler is null");
}
try {
if (!scheduler.isShutdown()) {
scheduler.shutdown();
}
} catch (SchedulerException ex) {
log.error("QuartzManager stop failed", ex);
throw ex;
}
}
/**
* 动态添加带参数定时任务
* @param jobName 任务名
* @param