java開源框架之——quartz配置及運用

Quartz是一個完全由java編寫的開源作業調度框架,具體的介紹可到http://www.opensymphony.com/quartz/官方網站查看。

他的主要功能就是做調度,顧名思義就是定時自動去幫我們執行一些程序 比如:定時的數據同步,備份,檢查之類的工作等等

本文沒有結合別的框架,只是單獨把quartz拿出來做的例子,廢話不多說 

首先是下載quartz相關jar包,放入web-inf的lib下

commons-beanutils.jar
commons-collections-3.1.jar
commons-digester.jar
commons-logging-1.1.1.jar
jta.jar
log4j-1.2.16.jar
quartz-all-1.6.0.jar

c3p0-0.9.1.1.jar
slf4j-api-1.6.6.jar
slf4j-log4j12-1.6.6.jar

然後我們創建一個第一個testjob,實現Job接口,重寫execute方法 

package com.quartz.test;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class TestJob implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println("TestJob....Start:"+sdf.format(new Date()));
}
}

然後在web.xml中配置tomcat啓動時加載的servlet 對quartz進行初始化,QuartzInitializerServlet是jar包中的文件

<servlet>
<servlet-name>quartz</servlet-name>
<servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
<init-param>
<param-name>config-file</param-name>
<param-value>/quartz.properties</param-value>
</init-param>
<init-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>start-scheduler-on-load</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

quartz.properties是quartz的配置文件,放在src下即可,內容如下:

#============================================================================  
# Configure Main Scheduler Properties    
#============================================================================  
org.quartz.scheduler.instanceName = TestScheduler  
org.quartz.scheduler.instanceId = AUTO  
#============================================================================  
# Configure ThreadPool    
#============================================================================  
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool  
org.quartz.threadPool.threadCount = 3  
org.quartz.threadPool.threadPriority = 5  
#============================================================================  
# Configure JobStore    
#============================================================================  
#org.quartz.jobStore.misfireThreshold = 60000  
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore  
#============================================================================  
# Configure Plugins   
#============================================================================  
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin  
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin  
org.quartz.plugin.jobInitializer.fileNames = quartz_jobx.xml
org.quartz.plugin.jobInitializer.overWriteExistingJobs = true  
org.quartz.plugin.jobInitializer.failOnFileNotFound = true  
org.quartz.plugin.jobInitializer.scanInterval = 10  
org.quartz.plugin.jobInitializer.wrapInUserTransaction =false
  
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileNames = quartz_jobx.xml
org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval = 10
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false

quartz_jobx.xml 配置文件放在src下即可,內容如下,配置指定要工作的類以及類路徑,其中<cron-expression>0/10 * * * * ?</cron-expression>指定工作的週期,0/10 * * * * ? 指每隔10秒執行一次  參數分別指 秒 分 時  日 月 星期 年(年是可選參數)

<?xml version="1.0" encoding="UTF-8"?>   
<quartz>   
     <job>   
         <job-detail>   
             <name>TestJob</name>   
             <group>Test</group>   
             <job-class>com.quartz.test.TestJob</job-class>   
         </job-detail>   
         <trigger>   
             <cron>   
                 <name>TestJob</name>   
                 <group>Test</group>   
                 <job-name>TestJob</job-name>   
                 <job-group>Test</job-group>   
                 <cron-expression>0/10 * * * * ?</cron-expression>   
             </cron>   
         </trigger>   
     </job>   
</quartz>

發佈了21 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章