Jfinal中定时器的初步探索(一)
1、添加包引用:/jfinal_demo/WebContent/WEB-INF/lib/quartz-all-1.6.1.jar
注意版本号,这个版本是现在项目中使用的,已经有更高版本了,但这版比较稳定。
2、添加Job的实现类:
package cn.jfinal.job; import java.text.SimpleDateFormat;
import java.util.Date; import org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public class RedPacketValidate implements Job{
private static final Logger log = Logger.getLogger(RedPacketValidate.class); @Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
validate(); } private void validate() {
// TODO Auto-generated method stub
SimpleDateFormat FORMAT = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
String msgString="当前时间:"+FORMAT.format(new Date());
log.info("红包定时器开始扫描……"+msgString);
System.out.println(msgString);
} }
三、添加调度类:
有了干活的,得通知他什么时候干活,怎么干。
SimpleScheduler 简单调度,以后会有复杂调度类,敬请期待。
package cn.jfinal.job; import java.util.Date; import org.apache.log4j.Logger;
import org.junit.Test;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory; public class SimpleScheduler { private static final Logger log = Logger.getLogger(SimpleScheduler.class); @Test
public void testScheduler()
{
SimpleScheduler simple = new SimpleScheduler();
try
{
// Create a Scheduler and schedule the Job
Scheduler scheduler = simple.createScheduler();
simple.scheduleJob(scheduler); // Start the Scheduler running
scheduler.start(); log.info( "Scheduler started at " + new Date()); } catch (SchedulerException ex) {
log.error(ex);
} } public Scheduler createScheduler() throws SchedulerException
{ //创建调度器
return StdSchedulerFactory.getDefaultScheduler();
} //Create and Schedule a RedPacketValidate with the Scheduler public void scheduleJob(Scheduler scheduler) throws SchedulerException
{ // Create a JobDetail for the Job
JobDetail jobDetail = new JobDetail("RedPacketValidate",Scheduler.DEFAULT_GROUP,RedPacketValidate.class); // Configure the directory to scan
//jobDetail.getJobDataMap().put("SCAN_DIR","D:\\Tomcat\\conf"); //set the JobDataMap that is associated with the Job. // Create a trigger that fires every 10 seconds, forever
Trigger trigger = TriggerUtils.makeSecondlyTrigger(10);//每10秒触发一次 trigger.setName("scanTrigger"); // Start the trigger firing from now
trigger.setStartTime(new Date());//设置第一次触发时间 // Associate the trigger with the job in the scheduler
scheduler.scheduleJob(jobDetail, trigger);
} }
四、在web中使用:
SimpleScheduler simple = new SimpleScheduler();
try {
// Create a Scheduler and schedule the Job
Scheduler scheduler = simple.createScheduler();
simple.scheduleJob(scheduler); // Start the Scheduler running
scheduler.start(); log.info("Scheduler started at " + new Date()); } catch (SchedulerException ex) {
log.error(ex);
}
五、注意引用job用到的jar包:

Jfinal中定时器的初步探索(一)的更多相关文章
- Jfinal中定时器的初步探索(二)
第一篇中增加的是程序代码的实现,本篇我们将通过配置文件进行定时器的配置,减少代码量,提高灵活性. 1.需要用到的文件:quartz.properties,据说这个文件如果没有的话,按默认的走,结果布署 ...
- Springboot与ActiveMQ、Solr、Redis中分布式事物的初步探索
Springboot与ActiveMQ.Solr.Redis中分布式事物的初步探索 解决的场景:事物中的异步问题,当要求数据库与solr服务器的最终一致时. 程序条件: 利用消息队列,当数据库添加成功 ...
- NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索
一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...
- 【转】 NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索
一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...
- jfinal中如何使用过滤器监控Druid监听SQL执行?
摘要:最开始我想做的是通过拦截器拦截SQL执行,但是经过测试发现,过滤器至少可以监听每一个SQL的执行与返回结果.因此,将这一次探索过程记录下来. 本文分享自华为云社区<jfinal中使用过滤器 ...
- Unity3D中定时器的使用
源地址:http://unity3d.9tech.cn/news/2014/0402/40149.html 在游戏设计过程中定时器是必不可少的工具,我们知道update方法是MonoBehavior中 ...
- PHP 中 config.m4 的探索
PHP 中 config.m4 的探索 最近在看php扩展相关的东西,虽然来来回回编辑了好多次config.m4,并且也在技术社区看到了 config.m4是什么?什么作用? 类的问题,但是还是觉得有 ...
- WPF中定时器与进度条的配合使用
WPF中定时器使用的注意事项: WPF需要使用System.Windows.Threading.DispatcherTimer定时器,而不能使用System.Timers.Timer定时器.因为Sys ...
- [转]Qt中定时器使用的两种方法
Qt中定时器的使用有两种方法,一种是使用QObject类提供的定时器,还有一种就是使用QTimer类. 其精确度一般依赖于操作系统和硬件,但一般支持20ms.下面将分别介绍两种方法来使用定时器. 方法 ...
随机推荐
- Channel Allocation_四色定理
Description When a radio station is broadcasting over a very large area, repeaters are used to retra ...
- 微信OAuth2网页授权
using System; using System.Collections.Generic; using System.Linq; using System.Text; using YTO.WeiX ...
- 64位gcc编译32位汇编
由于使用as和ld来编译链接汇编程序,在使用C库的时候比较麻烦,需要输入比较多的指令,所以使用gcc进行编译链接.由于书中内容是32位汇编程序,但是机器使用的是64位操作系统,自带的gcc也是64位的 ...
- 【题解】【数组】【Prefix Sums】【Codility】Passing Cars
A non-empty zero-indexed array A consisting of N integers is given. The consecutive elements of arra ...
- setInterval 函数传参(方法一)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ML2 – Address Population
Why do we need it, whatever it is? VM unicast, multicast and broadcast traffic flow is detailed in m ...
- 【转】MySQL命令
1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root ...
- C++ Vector 用法总结
1, 头文件#include <vector> using namespace std; 2,定义与初始化 一般结合模板来使用 vector <Elem> ...
- 21. Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...
- ZOJ 1115 Digital Roots
原题链接 题目大意:给一个数字,每一位相加求和,不断重复过程,直到剩一位数字. 解法:考虑到输入的数字可以很大,把输入按照字符串格式读入,再逐位处理. 参考代码: #include <iostr ...