按照大佬分享的定时任务调度,加入从数据库加载定时任务:JFinal使用技巧-动态管理任务调度
插件 MyCron4jPlugin,启动的时候从数据库加载任务
public class MyCron4jPlugin extends Cron4jPlugin {
@Override
public boolean start() {
loadTasksFromDb();
Cron4jKit.start();
System.out.println("加载定时任务插件并启动....");
return true;
}
@Override
public boolean stop() {
Cron4jKit.stop();
return true;
}
/**
* 从数据库加载任务
*/
public void loadTasksFromDb() {
try {
List<SxSysRunnable> runnableList = SxSysRunnable.me.list();
for (SxSysRunnable t:runnableList) {
Object jobObj = Class.forName(t.getStr("class_name")).newInstance();
Cron4jKit.put(t.getStr("config_name"),t.getStr("cron"),true,(Runnable) jobObj);
System.out.println("加载定时器:"+t.getStr("class_name"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
}
}2.RUNNABLE 表结构
create table T_SUP_RUNNABLE ( ID VARCHAR2(64) default sys_guid() not null constraint T_SUP_RUNNABLE_PK primary key, NAME VARCHAR2(64), CONFIG_NAME VARCHAR2(64), CRON VARCHAR2(128), CLASS_NAME VARCHAR2(64), STATUS NCHAR(1), END_RUN_TIME DATE default sysdate, RUN_COUNT NUMBER default 0 ) / comment on table T_SUP_RUNNABLE is '定时任务' / comment on column T_SUP_RUNNABLE.NAME is '任务名' / comment on column T_SUP_RUNNABLE.CONFIG_NAME is '任务标识' / comment on column T_SUP_RUNNABLE.CRON is '定时任务表达式' / comment on column T_SUP_RUNNABLE.CLASS_NAME is '类名' / comment on column T_SUP_RUNNABLE.STATUS is '状态' / comment on column T_SUP_RUNNABLE.RUN_COUNT is '执行次数' /