1. 程式人生 > >quartz 配置運行

quartz 配置運行

express bsp manage and eno enc same stub play

這篇文章是對quartz 2.2.1進行配置

分為spring 整合版本和QuartzInitializerServlet整合版本

首先是QuartzInitializerServlet整合版本

主要是參考下面這篇博客

http://liuzidong.iteye.com/blog/1149537

和官網教程

http://www.quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/

和API文檔

http://www.quartz-scheduler.org/api/2.2.1/index.html

配置文件

porm.xml

http://www.quartz-scheduler.org/downloads/

復制porm

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.2.1</version>
</dependency>
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz-jobs</artifactId>
    <version>2.2.1</version>
</dependency>   

還要添加jta

要不會報

java.lang.NoClassDefFoundError: javax/transaction/UserTransaction

根據:http://www.cnblogs.com/panie2015/p/5625439.html

添加對應jar就好了

<dependency>
  <groupId>javax.transaction</groupId>
  <artifactId>jta</artifactId>
  <version>1.1</version>
</dependency>

之後是web.xml配置

<servlet>
<servlet-name>QuartzInitializer</servlet-name>
    <display-name>Quartz Initializer Servlet</display-name>
    <servlet-class>
    	org.quartz.ee.servlet.QuartzInitializerServlet
    </servlet-class>
    <load-on-startup>2</load-on-startup>
    <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>wait-on-shutdown</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>  
</servlet>

 這樣子可以讓任務在tomcat啟動時就自動啟動,關閉之後自動關閉

主要參考API文檔:

http://www.quartz-scheduler.org/api/2.2.1/org/quartz/ee/servlet/QuartzInitializerServlet.html

裏面有示例

之後是

quartz_job.xml
quartz.properties

配置

首先是

quartz.properties配置:

參考:

http://www.quartz-scheduler.org/documentation/quartz-2.2.x/configuration/

有不懂得可以點到相關API文檔裏去看

org.quartz.scheduler.instanceName = DefaultQuartzScheduler
org.quartz.scheduler.instanceId = one
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5

org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin 
org.quartz.plugin.jobInitializer.fileNames = quartz_job.xml 
org.quartz.plugin.jobInitializer.failOnFileNotFound = true 

org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin 
org.quartz.plugin.shutdownhook.cleanShutdown =true

然後是quartz_job.xml

http://www.quartz-scheduler.org/documentation/quartz-2.x/cookbook/JobInitPlugin.html

註意這裏

            <group>DEFAULT</group>

要是default才可以,要不tomcat不會去執行

<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<job-scheduling-data xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
  version="1.8">
	<pre-processing-commands>  
    	<delete-jobs-in-group>*</delete-jobs-in-group>  <!-- clear all jobs in scheduler -->  
        <delete-triggers-in-group>*</delete-triggers-in-group> <!-- clear all triggers in scheduler -->  
   	</pre-processing-commands>  
  
    <processing-directives>  
    	<!-- if there are any jobs/trigger in scheduler of same name (as in this file), overwrite them -->  
        <overwrite-existing-data>true</overwrite-existing-data>  
        <!-- if there are any jobs/trigger in scheduler of same name (as in this file), and over-write is false, ignore them rather then generating an error -->  
        <ignore-duplicates>false</ignore-duplicates>  
  	</processing-directives>  
    <schedule>
    	<job>
        	<name>my-very-clever-job</name>
            <group>DEFAULT</group>
            <description>The job description</description>
            <job-class>com.xmal.dms.quatz.job</job-class>
            <job-data-map>
                <entry>
                    <key>timeout</key>
                    <value>5</value>
                </entry>
            </job-data-map>
        </job>

		<trigger>
    		<cron>
        		<name>my-trigger</name>
            	<group>DEFAULT</group>
            	<job-name>my-very-clever-job</job-name>
            	<job-group>DEFAULT</job-group>
	       	 	<!-- trigger every night at 23:30 am -->
            	<cron-expression>0 30 23 * * ?</cron-expression>
			</cron>
		</trigger>
	</schedule>
</job-scheduling-data>

 之後是job類

package com.xmal.dms.quatz;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class job implements Job {

	private int timeout;
	public void setTimeout(int timeout) {
		this.timeout = timeout;
	}

	//時間超出了就不行
	@Override
	public void execute(JobExecutionContext context) throws JobExecutionException {
		// TODO Auto-generated method stub
		System.out.println("hello1");

		for(int i=0;i<timeout;i++)
			System.out.println("hello");
	}
}

 相當於一個bean

	private int timeout;
	public void setTimeout(int timeout) {
		this.timeout = timeout;
	}
這麽寫就可以直接在代碼裏使用

首先是QuartzInitializerServlet整合版本

quartz 配置運行