cron4j的Jfinal plugin

项目需要用一些少量的后台调度任务,上周末再完全用jfinal重现项目的时候把quartz替换成了cron4j。虽然以前没用过cron4j但是感觉自己需要的简单功能用这个轻巧的jar包就足够了。刚开始是在一个servlet 监听器里面启动调度程序。后来想完全可以依赖于Jfinal的插件机制做一点点小扩展。献丑直接上代码。

另外cron4j替换quartz会不会出什么问题我也不清楚。求指教。

如果需要的话再弄个QuartzPlugIn

 

package com.jfinal.plugin.cron;

import it.sauronsoftware.cron4j.Scheduler;

import com.jfinal.plugin.IPlugin;

public class Cron4jPlugIn implements IPlugin {
	private final Scheduler scheduler = new Scheduler();

	@Override
	public boolean start() {
		scheduler.start();
		return true;
	}

	@Override
	public boolean stop() {
		scheduler.stop();
		return true;
	}

	public void addTask(String cronExpress, Runnable task) {
		scheduler.schedule(cronExpress, task);
	}

}

	/**
	 * 配置插件
	 */
	public void configPlugin(Plugins me) {
		C3p0Plugin c3p0Plugin = new C3p0Plugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password"));
		me.add(c3p0Plugin);
		ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
		me.add(arp);
		arp.addMapping("mobilebind", MobileBind.class);
		arp.addMapping("sendrecord", SendRecord.class);
		arp.setShowSql(true);
		SqlReporter.setLogger(true);
		Cron4jPlugIn cron4jPlugIn = new Cron4jPlugIn();
		if (getPropertyToBoolean("SendStudentInfo.enable") == true) {
			cron4jPlugIn.addTask(getProperty("SendStudentInfo.cron"), new SendStudentInfoTask());
		}
		if (getPropertyToBoolean("SmsUpReceive.enable") == true) {
			cron4jPlugIn.addTask(getProperty("SmsUpReceive.cron"), new SmsUpReceiveTask());
		}
		me.add(cron4jPlugIn);
	}

a_little_config.txt
SmsUpReceive.cron=* * * * *
SmsUpReceive.enable=true
SendStudentInfo.cron=0 * * * *
SendStudentInfo.enable=true

你可能感兴趣的:(jFinal,cron4j)