Java定时任务3:Jcrontab的使用

参考博客:
http://www.cnblogs.com/shenliang123/p/3231312.html 几种任务调度Java实现与比较

http://blog.csdn.net/jijijiujiu123/article/details/9086847 网站同事写的(chenrui)

http://blog.csdn.net/maskice/article/details/1670070进阶版

初学Jcrontab感觉非常好,用它来做一个定时程序非常容易,而且方便。有关Jcrontab的介绍和它的定时文件的格式,下面会介绍,这里先来讲解一下它在程序中的具体应用。在这里,我们先约定数据源这个概念,“数据源”(我暂且这样称呼),它主要是用来由Jcrontab按照定时规则要处理的类和程序,可以是多个,也可以是一个,我按照Jcrontab提供的方法通常是将它写到普通文件,XML文件或数据库中。这样,按照Jcrontab的规则,提供给Jcrontab这些数据源就可以使用Jcrotab的定时功能了。

根据Jcrontab存储的不同的数据源,我们可以分成以下几个:

  • 普通文件来存储
  • 数据库存储
  • XML文件存储

下面先介绍一下有关Jcrontab用到的配置文件:

  • jcrontab.properties配置文件,这是用来启动Jcrontab的必需文件。在Jcrontab的发布包中已经有一个完整格式的jcrontab.properties文件了,里面有它的样例,我们只需要根据我们自己的应用需要,来使用具体的配置属性,来构造自己的jcrontab.properties。
  • 还有一个配置文件就是我们自己的xml定时配置文件。(若我们采用的数据源是普通文件的话)这个文件是用来写负责处理的定时程序的,里面按照规定好的规则来处理规定好的类或类的方法。
  • 若我们采用数据库存储数据源的话,那么,我们就需要配置一个数据库的信息,在jcrontab.properties文件中已经有一个例子了,我们可以改成我们需要的数据库配置信息,这个很容易。
  • 若要采用的是XML形式的文件,那么我们要指定数据源是XML的,同时指定处理XML的解析器,这里用的是Apache的Xerces。
  • 在程序中随时可以添加数据源,通过Crontab中的newTask方法,就可以随时添加。

1、普通文件存储数据源

1.首先要下载JCrontab的相关jar包,Jcrontab-2.0-RC0.jar。

2.在web.xml文件中配置JCrontab

	
		LoadOnStartupServlet
		org.jcrontab.web.loadCrontabServlet
		
			PROPERTIES_FILE
			 
			D:/Workspaces/TimerAndCron/config/crontab/jcrontab.properties
		
		200
	
	
		LoadOnStartupServlet
		/Startup
	

3.jcrontab.properties文件

#指定crontab文件的位置
org.jcrontab.data.file = D:/Workspaces/TimerAndCron/config/crontab/crontab
#配置持久化文件为org.jcrontab.data.FileSource,也就是普通文件
org.jcrontab.data.datasource = org.jcrontab.data.FileSource
org.jcrontab.Crontab.refreshFrequency = 3
org.jcrontab.log.Logger=org.jcrontab.log.Log4JLogger
org.jcrontab.log.log4J.Properties=D:/Workspaces/TimerAndCron/config/log4j.properties

4.crontab文件(描述了任务的调度安排)

# Tasks planification configuration file.
# IMPORTANT: All the index begin in 0, except day of month and

#       month that begin in 1.

#              minute         0-59
#              hour           0-23
#              day of month   1-31
#              month          1-12
#              day of week    0-6 (0 is Sunday)
 

#每两分钟执行一次 CrontabMainTest1的 main方法
 */2 * * * * com.kang.timerandcron.cron.process.CrontabMainTest#main Hello World

#每一分钟执行一次 CrontabRunTest1的 run方法,并传入参数Hello World
 * * * * * com.kang.timerandcron.cron.process.CrontabRunTest#run Hello World

5.定时任务CrontabMainTest和CrontabRunTest的代码

public class CrontabMainTest {

	public static void main(String[] args) {

		System.out.println(new Date());
		System.out.print("调用main方法   ");
		if (args.length > 0 && args != null) {
			for (String str : args) {
				System.out.print(str + " ");
			}
			System.out.println();
		}
	}
}

 

/**
 * 需要实现Runnable接口,可以接收参数
 * @author kang
 *
 */
public class CrontabRunTest implements Runnable {

	private String[] args;

	public CrontabRunTest(String[] args) {

		this.args = args;
	}

	public void run() {

		System.out.println(new Date());
		System.out.print("调用run方法   ");
		if (args.length > 0 && args != null) {
			for (String str : args) {
				System.out.print(str + " ");
			}
			System.out.println();
		}
	}
}


2、XML文件存储数据源

1.导入相关的jar包:Jcrontab-2.0-RC0.jar,xerces.jar

2.和上面“普通文件持久化”的2 相同

3.Jcrontab.properties文件

#指定xml配置文件的地址(绝对路径)
org.jcrontab.data.file=D:/Workspaces/TimerAndCron/config/crontab/crontab.xml
#配置xml解析器
org.xml.sax.driver=org.apache.xerces.parsers.SAXParser
#指定持久化文件为xml文件
org.jcrontab.data.datasource=org.jcrontab.data.XMLSource

4.crontab.xml配置文件(描述了任务的调度安排)




	
	
    10,20,30,40,50
    *
    *
    *
    *
    *
    *
    true
    
    
    com.kang.timerandcron.cron.process.CrontabRunTest
    run
    hello world
    
	
	
	
	
    0
    52
    10
    *
    *
    *
    *
    true
    
    
    com.kang.timerandcron.cron.process.CrontabMainTest
    main
    hello world
    
	
	

5.和上面“普通文件持久化”的5 相同

 

3、数据库存储数据源

通过数据库存储数据源一般各个项目都会自己实现,下篇文章中再给大家介绍

 

你可能感兴趣的:(定时任务)