按照大佬分享的定时任务调度,加入从数据库加载定时任务: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 '执行次数' /