quartz2.1.7 持久化(XML)

import java.util.Date;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class MyJob extends QuartzJobBean {

	@Override
	protected void executeInternal(JobExecutionContext context)
			throws JobExecutionException {
		try {
			Thread.sleep(1001 * 60 * 2);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("MyJob: " + context.getJobDetail().getKey().toString() + new Date());
	}

}


import java.util.Date;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class MyJob1 extends QuartzJobBean {

	@Override
	protected void executeInternal(JobExecutionContext context)
			throws JobExecutionException {
		try {
			Thread.sleep(1001 * 60 * 2);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("MyJob1: " + context.getJobDetail().getKey().toString() + new Date());
	}

}

import java.util.Date;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class MyJob2 extends QuartzJobBean {

	@Override
	protected void executeInternal(JobExecutionContext context)
			throws JobExecutionException {
		try {
			Thread.sleep(1001 * 60 * 2);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("MyJob2: " + context.getJobDetail().getKey().toString() + new Date());
	}

}

import java.util.Date;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class MyJob3 extends QuartzJobBean {

	@Override
	protected void executeInternal(JobExecutionContext context)
			throws JobExecutionException {
		try {
			Thread.sleep(1001 * 60 * 2);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("MyJob3: " + context.getJobDetail().getKey().toString() + new Date());
	}

}

import java.util.Date;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class MyJob4 extends QuartzJobBean {

	@Override
	protected void executeInternal(JobExecutionContext context)
			throws JobExecutionException {
		try {
			Thread.sleep(1001 * 60 * 2);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("MyJob4: " + context.getJobDetail().getKey().toString() + new Date());
	}

}

import java.util.Date;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class MyJob5 extends QuartzJobBean {

	@Override
	protected void executeInternal(JobExecutionContext context)
			throws JobExecutionException {
		try {
			Thread.sleep(1001 * 60 * 2);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("MyJob5: " + context.getJobDetail().getKey().toString() + new Date());
	}

}


applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd"> 
    <bean id="myjob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    	<property name="jobClass" value="com.tgb.lk.demo.quartz.MyJob" />
		<property name="durability" value="true" />
		<property name="group" value="myjob" />
	</bean>
	<bean id="myjob1" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    	<property name="jobClass" value="com.tgb.lk.demo.quartz.MyJob1" />
		<property name="durability" value="true" />
		<property name="group" value="myjob" />
	</bean>
	<bean id="myjob2" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    	<property name="jobClass" value="com.tgb.lk.demo.quartz.MyJob2" />
		<property name="durability" value="true" />
		<property name="group" value="myjob" />
	</bean>
	<bean id="myjob3" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    	<property name="jobClass" value="com.tgb.lk.demo.quartz.MyJob3" />
		<property name="durability" value="true" />
		<property name="group" value="myjob" />
	</bean>
	<bean id="myjob4" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    	<property name="jobClass" value="com.tgb.lk.demo.quartz.MyJob4" />
		<property name="durability" value="true" />
		<property name="group" value="myjob" />
	</bean>
	<bean id="myjob5" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    	<property name="jobClass" value="com.tgb.lk.demo.quartz.MyJob5" />
		<property name="durability" value="true" />
		<property name="group" value="myjob" />
	</bean>
	<bean id="CronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="myjob"/>
		<property name="cronExpression" value="0 0/2 * * * ?"/>
	</bean>
	<bean id="CronTriggerBean1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="myjob1"/>
		<property name="cronExpression" value="0 0/2 * * * ?"/>
	</bean>
	<bean id="CronTriggerBean2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="myjob2"/>
		<property name="cronExpression" value="0 0/2 * * * ?"/>
	</bean>
	<bean id="CronTriggerBean3" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="myjob3"/>
		<property name="cronExpression" value="0 0/2 * * * ?"/>
	</bean>
	<bean id="CronTriggerBean4" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="myjob4"/>
		<property name="cronExpression" value="0 0/2 * * * ?"/>
	</bean>
	<bean id="CronTriggerBean5" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="myjob5"/>
		<property name="cronExpression" value="0 0/2 * * * ?"/>
	</bean>
	<bean id="springJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="CronTriggerBean"/>
				<ref bean="CronTriggerBean1"/>
				<ref bean="CronTriggerBean2"/>
				<ref bean="CronTriggerBean3"/>
				<ref bean="CronTriggerBean4"/>
				<ref bean="CronTriggerBean5"/>
			</list>
		</property>
		<property name="configLocation" value="classpath:quartz.properties" /> 
	</bean>
</beans>


quartz.properties:

#============================================================================
# Configure Main Scheduler Properties  
#============================================================================
org.quartz.scheduler.instanceName = My_Quartz
org.quartz.scheduler.instanceId = AUTO

#============================================================================
# Configure ThreadPool  
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true

#============================================================================
# Configure JobStore single
#============================================================================
#RAM
#org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore #这是默认的

#============================================================================
# Configure JobStore Cluster
#============================================================================
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
org.quartz.jobStore.tablePrefix = QRTZ_
#org.quartz.jobStore.misfireThreshold = 60000
#org.quartz.jobStore.isClustered = true
#org.quartz.jobStore.clusterCheckinInterval = 15000

org.quartz.jobStore.dataSource = myDS
#============================================================================
# Configure dataSource  
#============================================================================
#dataSource--myDS
org.quartz.dataSource.myDS.driver = oracle.jdbc.OracleDriver
org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@192.168.16.54:1521:orcl
org.quartz.dataSource.myDS.user = gs
org.quartz.dataSource.myDS.password = gs
org.quartz.dataSource.myDS.maxConnections = 10


web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <!-- 加载Spring Framework容器 -->
  <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>WEB-INF/classes/applicationContext.xml</param-value>
  </context-param> 
  <display-name>quartz01</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>quartz01</groupId>
  <artifactId>quartz01</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <dependencies>
  	<dependency>
	    <groupId>org.quartz-scheduler</groupId>
	    <artifactId>quartz</artifactId>
	    <version>2.1.7</version>
	</dependency>
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-core</artifactId>
	    <version>3.2.4.RELEASE</version>
	</dependency> 
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-web</artifactId>
	    <version>3.2.2.RELEASE</version>
	</dependency>
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-orm</artifactId>
	    <version>3.2.2.RELEASE</version>
	</dependency>
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-tx</artifactId>
	    <version>3.2.2.RELEASE</version> 
	</dependency>
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-context-support</artifactId>
	    <version>3.2.2.RELEASE</version>
	</dependency>
	<dependency>
		<groupId>ojdbc</groupId>
		<artifactId>ojdbc</artifactId>
		<version>14</version>
	</dependency> 
	<dependency>
	    <groupId>org.quartz-scheduler</groupId>
	    <artifactId>quartz-oracle</artifactId>
	    <version>2.1.7</version>
	</dependency>
  </dependencies>
</project>

需要的数据库表结构:

http://blog.csdn.net/lzj0470/article/details/17795991

注意:

这里有多个JOB,假设有100个JOB,每个JOB都需要花很长时间才能执行完,并且线程数只有5个,这样会出现一个问题。就是某些JOB可能很难被执行到。

总结:

基于XML的写法,看起来很不舒服,密密麻麻的,很多配置。(不知道还有其它更加简单的写法不)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzj0470

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值