quartz2.1.7 持久化(XML)

来源:互联网 发布:淘宝学生证怎么搜 编辑:程序博客网 时间:2024/05/22 15:16
[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import java.util.Date;  
  2.   
  3. import org.quartz.JobExecutionContext;  
  4. import org.quartz.JobExecutionException;  
  5. import org.springframework.scheduling.quartz.QuartzJobBean;  
  6.   
  7. public class MyJob extends QuartzJobBean {  
  8.   
  9.     @Override  
  10.     protected void executeInternal(JobExecutionContext context)  
  11.             throws JobExecutionException {  
  12.         try {  
  13.             Thread.sleep(1001 * 60 * 2);  
  14.         } catch (InterruptedException e) {  
  15.             // TODO Auto-generated catch block  
  16.             e.printStackTrace();  
  17.         }  
  18.         System.out.println("MyJob: " + context.getJobDetail().getKey().toString() + new Date());  
  19.     }  
  20.   
  21. }  


[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import java.util.Date;  
  2.   
  3. import org.quartz.JobExecutionContext;  
  4. import org.quartz.JobExecutionException;  
  5. import org.springframework.scheduling.quartz.QuartzJobBean;  
  6.   
  7. public class MyJob1 extends QuartzJobBean {  
  8.   
  9.     @Override  
  10.     protected void executeInternal(JobExecutionContext context)  
  11.             throws JobExecutionException {  
  12.         try {  
  13.             Thread.sleep(1001 * 60 * 2);  
  14.         } catch (InterruptedException e) {  
  15.             // TODO Auto-generated catch block  
  16.             e.printStackTrace();  
  17.         }  
  18.         System.out.println("MyJob1: " + context.getJobDetail().getKey().toString() + new Date());  
  19.     }  
  20.   
  21. }  

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import java.util.Date;  
  2.   
  3. import org.quartz.JobExecutionContext;  
  4. import org.quartz.JobExecutionException;  
  5. import org.springframework.scheduling.quartz.QuartzJobBean;  
  6.   
  7. public class MyJob2 extends QuartzJobBean {  
  8.   
  9.     @Override  
  10.     protected void executeInternal(JobExecutionContext context)  
  11.             throws JobExecutionException {  
  12.         try {  
  13.             Thread.sleep(1001 * 60 * 2);  
  14.         } catch (InterruptedException e) {  
  15.             // TODO Auto-generated catch block  
  16.             e.printStackTrace();  
  17.         }  
  18.         System.out.println("MyJob2: " + context.getJobDetail().getKey().toString() + new Date());  
  19.     }  
  20.   
  21. }  

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import java.util.Date;  
  2.   
  3. import org.quartz.JobExecutionContext;  
  4. import org.quartz.JobExecutionException;  
  5. import org.springframework.scheduling.quartz.QuartzJobBean;  
  6.   
  7. public class MyJob3 extends QuartzJobBean {  
  8.   
  9.     @Override  
  10.     protected void executeInternal(JobExecutionContext context)  
  11.             throws JobExecutionException {  
  12.         try {  
  13.             Thread.sleep(1001 * 60 * 2);  
  14.         } catch (InterruptedException e) {  
  15.             // TODO Auto-generated catch block  
  16.             e.printStackTrace();  
  17.         }  
  18.         System.out.println("MyJob3: " + context.getJobDetail().getKey().toString() + new Date());  
  19.     }  
  20.   
  21. }  

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import java.util.Date;  
  2.   
  3. import org.quartz.JobExecutionContext;  
  4. import org.quartz.JobExecutionException;  
  5. import org.springframework.scheduling.quartz.QuartzJobBean;  
  6.   
  7. public class MyJob4 extends QuartzJobBean {  
  8.   
  9.     @Override  
  10.     protected void executeInternal(JobExecutionContext context)  
  11.             throws JobExecutionException {  
  12.         try {  
  13.             Thread.sleep(1001 * 60 * 2);  
  14.         } catch (InterruptedException e) {  
  15.             // TODO Auto-generated catch block  
  16.             e.printStackTrace();  
  17.         }  
  18.         System.out.println("MyJob4: " + context.getJobDetail().getKey().toString() + new Date());  
  19.     }  
  20.   
  21. }  

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import java.util.Date;  
  2.   
  3. import org.quartz.JobExecutionContext;  
  4. import org.quartz.JobExecutionException;  
  5. import org.springframework.scheduling.quartz.QuartzJobBean;  
  6.   
  7. public class MyJob5 extends QuartzJobBean {  
  8.   
  9.     @Override  
  10.     protected void executeInternal(JobExecutionContext context)  
  11.             throws JobExecutionException {  
  12.         try {  
  13.             Thread.sleep(1001 * 60 * 2);  
  14.         } catch (InterruptedException e) {  
  15.             // TODO Auto-generated catch block  
  16.             e.printStackTrace();  
  17.         }  
  18.         System.out.println("MyJob5: " + context.getJobDetail().getKey().toString() + new Date());  
  19.     }  
  20.   
  21. }  


applicationContext.xml:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
  5.     xsi:schemaLocation="  
  6.     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
  7.     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd  
  8.     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd  
  9.     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">   
  10.     <bean id="myjob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">  
  11.         <property name="jobClass" value="com.tgb.lk.demo.quartz.MyJob" />  
  12.         <property name="durability" value="true" />  
  13.         <property name="group" value="myjob" />  
  14.     </bean>  
  15.     <bean id="myjob1" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">  
  16.         <property name="jobClass" value="com.tgb.lk.demo.quartz.MyJob1" />  
  17.         <property name="durability" value="true" />  
  18.         <property name="group" value="myjob" />  
  19.     </bean>  
  20.     <bean id="myjob2" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">  
  21.         <property name="jobClass" value="com.tgb.lk.demo.quartz.MyJob2" />  
  22.         <property name="durability" value="true" />  
  23.         <property name="group" value="myjob" />  
  24.     </bean>  
  25.     <bean id="myjob3" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">  
  26.         <property name="jobClass" value="com.tgb.lk.demo.quartz.MyJob3" />  
  27.         <property name="durability" value="true" />  
  28.         <property name="group" value="myjob" />  
  29.     </bean>  
  30.     <bean id="myjob4" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">  
  31.         <property name="jobClass" value="com.tgb.lk.demo.quartz.MyJob4" />  
  32.         <property name="durability" value="true" />  
  33.         <property name="group" value="myjob" />  
  34.     </bean>  
  35.     <bean id="myjob5" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">  
  36.         <property name="jobClass" value="com.tgb.lk.demo.quartz.MyJob5" />  
  37.         <property name="durability" value="true" />  
  38.         <property name="group" value="myjob" />  
  39.     </bean>  
  40.     <bean id="CronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
  41.         <property name="jobDetail" ref="myjob"/>  
  42.         <property name="cronExpression" value="0 0/2 * * * ?"/>  
  43.     </bean>  
  44.     <bean id="CronTriggerBean1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
  45.         <property name="jobDetail" ref="myjob1"/>  
  46.         <property name="cronExpression" value="0 0/2 * * * ?"/>  
  47.     </bean>  
  48.     <bean id="CronTriggerBean2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
  49.         <property name="jobDetail" ref="myjob2"/>  
  50.         <property name="cronExpression" value="0 0/2 * * * ?"/>  
  51.     </bean>  
  52.     <bean id="CronTriggerBean3" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
  53.         <property name="jobDetail" ref="myjob3"/>  
  54.         <property name="cronExpression" value="0 0/2 * * * ?"/>  
  55.     </bean>  
  56.     <bean id="CronTriggerBean4" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
  57.         <property name="jobDetail" ref="myjob4"/>  
  58.         <property name="cronExpression" value="0 0/2 * * * ?"/>  
  59.     </bean>  
  60.     <bean id="CronTriggerBean5" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
  61.         <property name="jobDetail" ref="myjob5"/>  
  62.         <property name="cronExpression" value="0 0/2 * * * ?"/>  
  63.     </bean>  
  64.     <bean id="springJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
  65.         <property name="triggers">  
  66.             <list>  
  67.                 <ref bean="CronTriggerBean"/>  
  68.                 <ref bean="CronTriggerBean1"/>  
  69.                 <ref bean="CronTriggerBean2"/>  
  70.                 <ref bean="CronTriggerBean3"/>  
  71.                 <ref bean="CronTriggerBean4"/>  
  72.                 <ref bean="CronTriggerBean5"/>  
  73.             </list>  
  74.         </property>  
  75.         <property name="configLocation" value="classpath:quartz.properties" />   
  76.     </bean>  
  77. </beans>  


quartz.properties:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #============================================================================  
  2. # Configure Main Scheduler Properties    
  3. #============================================================================  
  4. org.quartz.scheduler.instanceName = My_Quartz  
  5. org.quartz.scheduler.instanceId = AUTO  
  6.   
  7. #============================================================================  
  8. # Configure ThreadPool    
  9. #============================================================================  
  10. org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool  
  11. org.quartz.threadPool.threadCount = 5  
  12. org.quartz.threadPool.threadPriority = 5  
  13. org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true  
  14.   
  15. #============================================================================  
  16. # Configure JobStore single  
  17. #============================================================================  
  18. #RAM  
  19. #org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore #这是默认的  
  20.   
  21. #============================================================================  
  22. # Configure JobStore Cluster  
  23. #============================================================================  
  24. org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX  
  25. org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.OracleDelegate  
  26. org.quartz.jobStore.tablePrefix = QRTZ_  
  27. #org.quartz.jobStore.misfireThreshold = 60000  
  28. #org.quartz.jobStore.isClustered = true  
  29. #org.quartz.jobStore.clusterCheckinInterval = 15000  
  30.   
  31. org.quartz.jobStore.dataSource = myDS  
  32. #============================================================================  
  33. # Configure dataSource    
  34. #============================================================================  
  35. #dataSource--myDS  
  36. org.quartz.dataSource.myDS.driver = oracle.jdbc.OracleDriver  
  37. org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@192.168.16.54:1521:orcl  
  38. org.quartz.dataSource.myDS.user = gs  
  39. org.quartz.dataSource.myDS.password = gs  
  40. org.quartz.dataSource.myDS.maxConnections = 10  


web.xml:

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <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">  
  3.   <!-- 加载Spring Framework容器 -->  
  4.   <listener>  
  5.       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  6.   </listener>  
  7.   <context-param>  
  8.     <param-name>contextConfigLocation</param-name>  
  9.     <param-value>WEB-INF/classes/applicationContext.xml</param-value>  
  10.   </context-param>   
  11.   <display-name>quartz01</display-name>  
  12.   <welcome-file-list>  
  13.     <welcome-file>index.html</welcome-file>  
  14.     <welcome-file>index.htm</welcome-file>  
  15.     <welcome-file>index.jsp</welcome-file>  
  16.     <welcome-file>default.html</welcome-file>  
  17.     <welcome-file>default.htm</welcome-file>  
  18.     <welcome-file>default.jsp</welcome-file>  
  19.   </welcome-file-list>  
  20. </web-app>  

pom.xml

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <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">  
  2.   <modelVersion>4.0.0</modelVersion>  
  3.   <groupId>quartz01</groupId>  
  4.   <artifactId>quartz01</artifactId>  
  5.   <version>0.0.1-SNAPSHOT</version>  
  6.   <packaging>war</packaging>  
  7.   <dependencies>  
  8.     <dependency>  
  9.         <groupId>org.quartz-scheduler</groupId>  
  10.         <artifactId>quartz</artifactId>  
  11.         <version>2.1.7</version>  
  12.     </dependency>  
  13.     <dependency>  
  14.         <groupId>org.springframework</groupId>  
  15.         <artifactId>spring-core</artifactId>  
  16.         <version>3.2.4.RELEASE</version>  
  17.     </dependency>   
  18.     <dependency>  
  19.         <groupId>org.springframework</groupId>  
  20.         <artifactId>spring-web</artifactId>  
  21.         <version>3.2.2.RELEASE</version>  
  22.     </dependency>  
  23.     <dependency>  
  24.         <groupId>org.springframework</groupId>  
  25.         <artifactId>spring-orm</artifactId>  
  26.         <version>3.2.2.RELEASE</version>  
  27.     </dependency>  
  28.     <dependency>  
  29.         <groupId>org.springframework</groupId>  
  30.         <artifactId>spring-tx</artifactId>  
  31.         <version>3.2.2.RELEASE</version>   
  32.     </dependency>  
  33.     <dependency>  
  34.         <groupId>org.springframework</groupId>  
  35.         <artifactId>spring-context-support</artifactId>  
  36.         <version>3.2.2.RELEASE</version>  
  37.     </dependency>  
  38.     <dependency>  
  39.         <groupId>ojdbc</groupId>  
  40.         <artifactId>ojdbc</artifactId>  
  41.         <version>14</version>  
  42.     </dependency>   
  43.     <dependency>  
  44.         <groupId>org.quartz-scheduler</groupId>  
  45.         <artifactId>quartz-oracle</artifactId>  
  46.         <version>2.1.7</version>  
  47.     </dependency>  
  48.   </dependencies>  
  49. </project>  

需要的数据库表结构:

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

注意:

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

总结:

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

0 0
原创粉丝点击