文档章节

cron4j的Jfinal plugin

绝望的八皮
 绝望的八皮
发布于 2012/07/16 14:38
字数 267
阅读 2479
收藏 5

项目需要用一些少量的后台调度任务,上周末再完全用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

© 著作权归作者所有

共有 人打赏支持
绝望的八皮

绝望的八皮

粉丝 392
博文 22
码字总数 10505
作品 2
其它
CTO(技术副总裁)
私信 提问
加载中

评论(12)

廖贻恒
廖贻恒
还不错,你不更新么
dby521103
dby521103
请问如何让jfinal 支持 动态添加quart任务呢 吧任务持久化到数据库去
曹书豪
曹书豪
if (x==true)可以写成if(x)
==true这样的代码是没有必要的
绝望的八皮
绝望的八皮

引用来自“农夫三拳”的评论

这样搞定时 调度也解决了 ,其实吧,我觉得你可以设定一种配置,配置就有个参数就是标识 是否要启动定时 调试,这样你就不用写那么多if了,

恩我新写了个quartzplugin已经支持这样的功能
CQRS恶棍
CQRS恶棍
这样搞定时 调度也解决了 ,其实吧,我觉得你可以设定一种配置,配置就有个参数就是标识 是否要启动定时 调试,这样你就不用写那么多if了,
绝望的八皮
绝望的八皮

引用来自“JFinal”的评论

引用来自“绝望的八皮”的评论

引用来自“JFinal”的评论

在 YourJFinalConfig 中通过 if 来动态进行配置,头一回见人有这么用,楼主相当有探索精神 :)

你有什么好的建议呢,task有可能会不启用,开始想把开关作为task的构造参数,但是感觉很别扭。

如果业务比较复杂,建议把这部分单独到一个类中去做,在YourJFinalConfig 相应的方法中调用一下即可。甚至如果 ActiveRecrordPlugin 中涉及的表过多,也可以独立出来,如独立到 ActiveRecordBuilder 中去。

嗯,明白,受用了
JFinal
JFinal

引用来自“绝望的八皮”的评论

引用来自“JFinal”的评论

在 YourJFinalConfig 中通过 if 来动态进行配置,头一回见人有这么用,楼主相当有探索精神 :)

你有什么好的建议呢,task有可能会不启用,开始想把开关作为task的构造参数,但是感觉很别扭。

如果业务比较复杂,建议把这部分单独到一个类中去做,在YourJFinalConfig 相应的方法中调用一下即可。甚至如果 ActiveRecrordPlugin 中涉及的表过多,也可以独立出来,如独立到 ActiveRecordBuilder 中去。
绝望的八皮
绝望的八皮

引用来自“JFinal”的评论

在 YourJFinalConfig 中通过 if 来动态进行配置,头一回见人有这么用,楼主相当有探索精神 :)

你有什么好的建议呢,task有可能会不启用,开始想把开关作为task的构造参数,但是感觉很别扭。
绝望的八皮
绝望的八皮

引用来自“JFinal”的评论

你总是能发现 JFinal 手册中没有提到的功能,很有潜力,赞一个 :)

是你代码好读,一看就能看出来哈哈
JFinal
JFinal
在 YourJFinalConfig 中通过 if 来动态进行配置,头一回见人有这么用,楼主相当有探索精神 :)
JFinal 中的cron4j定时插件 能做到按秒执行吗

@JFinal 你好,想跟你请教个问题: JFinal 中的cron4j定时插件 能做到按秒执行吗,如果不行,怎么办

lc风之伤
2017/06/26
113
1
JFinal里面的cron4j怎么控制并发

@JFinal 你好,想跟你请教个问题:JFinal里面的cron4j插件怎么控制并发?比如我是1分钟执行一次,上次执行比较慢,超过了一分钟,导致后面又启动了一次调度。怎么样控制才能保证每次一个任务...

showmewin
2017/05/26
594
2
关于cron4j的几个小问题

最近有在学习中使用到cron4j,有几个问题想要请教一下各位大神。 1.cron4j我在用的过程中觉得很简洁,然后也只需要依赖一个jar包,觉得很好用啊,为啥感觉用的人不多,网上相关资料更是寥寥无...

tiankongshijie5
2017/06/26
152
2
JFinal 中的cron4j定时插件

1、下载cron4j的jar包,并放入classpath http://www.sauronsoftware.it/projects/cron4j/download.php 2、编写Cron4jPlugin.java package com.welicai.app.common.plugin; import it.sauron......

小99
2015/03/28
0
4
请教一下jfinal-demo的数据库初始化问题

@Dreampie 你好,想跟你请教个问题: 我在jfinal-demo中使用cn.dreampie:flyway-maven-plugin:1.0:migrate启动,结果报错: [info] location:filesystem:D:\WorkZone\GitHub\jfinal-demo/src/m......

牛奶拌饭
2015/07/20
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

记录replugin使用的一个坑

反复编译插件放入宿主中,一直出现如下错误: android.content.res.Resources$NotFoundException: Resource ID #0x7f050000 type #0x5 is not valid 回滚代码,重启AS还是出错。最终发现将宿...

Gemini-Lin
今天
1
0
Vert.x系列(二)--EventBusImpl源码分析

前言:Vert.x 实现了2种完成不同的eventBus: EventBusImpl(A local event bus implementation)和 它的子类 ClusteredEventBus(An event bus implementation that clusters with other Ve......

冷基
今天
1
0
Perl - 获取文件项目

参考:http://www.runoob.com/perl/perl-directories.html 下面返回JSON格式的文件列表 #!/usr/bin/perluse strict;use warnings;use utf8;use feature ':5.26';require Fi......

wffger
昨天
2
0
vue组件系列3、查询下载

直接源码,虽然样式样式不好看,逻辑也不是最优,但是可以留作纪念。毕竟以后类似的功能只需要优化就可以了,不用每次都重头开始。。。 <template> <div class="pre_upload"> <div ...

轻轻的往前走
昨天
2
0
java浅复制和深复制

之前写了数组的复制,所以这里继续总结一下浅复制和深复制。 浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝。 深拷贝:对基本数据类型进行值传递,对引用数据类型,...

woshixin
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部