分享

Quartz任务调度在web中的简单使用 - 困难户 - JavaEye技术网站

 汲取者 2010-06-01

Quartz任务调度在web中的简单使用

关键字: quartz 任务 调度

常常会在Web应用中需要启动一个自己写的服务,比如说刷新主页,统计数据等,下面提供一种简单的方式.

作业类 :
通 过实现 org.quartz.job 接口 , 覆盖了 execute(JobExecutionContext context) 方法。
这 个方法可以包含我们想要执行的任何代码

 

 

Java代码
  1. package com;  
  2.   
  3. import java.util.Date;  
  4.   
  5. import org.quartz.Job;  
  6. import org.quartz.JobExecutionContext;  
  7. import org.quartz.JobExecutionException;  
  8.   
  9. public class Job1 implements Job {  
  10.       
  11.     public Job1() {  
  12.           
  13.     }  
  14.   
  15.   
  16.     public void execute(JobExecutionContext context)  
  17.             throws JobExecutionException {  
  18.         System.out.println("job1-" + new Date());  
  19.     }  
  20. }  
  21.   
  22. package com;  
  23.   
  24. import java.util.Date;  
  25.   
  26. import org.quartz.Job;  
  27. import org.quartz.JobExecutionContext;  
  28. import org.quartz.JobExecutionException;  
  29.   
  30. public class Job2 implements Job {  
  31.       
  32.     public Job2() {  
  33.     }  
  34.   
  35.   
  36.     public void execute(JobExecutionContext context)  
  37.             throws JobExecutionException {  
  38.         System.out.println("job2-" + new Date());  
  39.     }  
  40. }  

 

 

编写quartz.properties文件,这个文件的默认名称就是 quartz.properties,如果启动项目的时候,Quartz没有在工程中找到该文件,
就会从自己的jar包下面读取其默认的 properties文件

 

quartz.properties

org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = one

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 2
org.quartz.threadPool.threadPriority = 4

org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileName = quartz_job.xml

 

 

然后编写quartz_job.xml

Xml代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <quartz>  
  3.     <job>  
  4.         <job-detail>  
  5.             <name>job1</name>  
  6.             <group>job</group>  
  7.             <job-class>com.Job1</job-class>  
  8.         </job-detail>  
  9.         <trigger>  
  10.             <cron>  
  11.                 <name>t1</name>  
  12.                 <group>job</group>  
  13.                 <job-name>job1</job-name>  
  14.                 <job-group>job</job-group>  
  15.                 <cron-expression>0/10 * * * * ?</cron-expression>  
  16.             </cron>  
  17.         </trigger>  
  18.     </job>  
  19.       
  20.     <job>  
  21.         <job-detail>  
  22.             <name>job2</name>  
  23.             <group>job</group>  
  24.             <job-class>com.Job2</job-class>  
  25.         </job-detail>  
  26.         <trigger>  
  27.             <cron>  
  28.                 <name>t2</name>  
  29.                 <group>job</group>  
  30.                 <job-name>job2</job-name>  
  31.                 <job-group>job</job-group>  
  32.                 <cron-expression>0/20 * * * * ?</cron-expression>  
  33.             </cron>  
  34.         </trigger>  
  35.     </job>  
  36. </quartz>  

 

<cron-expression>0/20 * * * * ?</cron-expression>

Cron 表达式包括以下 7 个字段:秒 分 小时 月内日期 月 周内日期 年(可选字段)
意思是:从0秒开始计算,安排任务每 20 秒执行一次。
比如说现在是5点10分18秒启动的服务,它会从0秒(10分 整)开始计算,到5点10分20秒执行,那么会先执行job2,接下来过10秒执行job1,过20秒执行job2.....


在配 置文件中把jobdetail和trigger都作了定义并组合成一个job。

最后修改一下web.xml。

 

 

Xml代码
  1. <servlet>  
  2.     <servlet-name>quartz</servlet-name>  
  3.     <servlet-class>  
  4.         org.quartz.ee.servlet.QuartzInitializerServlet  
  5.     </servlet-class>  
  6.     <init-param>  
  7.         <param-name>config-file</param-name>  
  8.         <param-value>/quartz.properties</param-value>  
  9.     </init-param>  
  10.     <init-param>  
  11.         <param-name>shutdown-on-unload</param-name>  
  12.         <param-value>true</param-value>  
  13.     </init-param>  
  14.     <load-on-startup>1</load-on-startup>  
  15. </servlet>  
  16.   
  17.   
  18. 也 可以使用监听器  
  19.   
  20. <context-param>  
  21.     <param-name>config-file</param-name>  
  22.     <param-value>/quartz.properties</param-value>  
  23. </context-param>  
  24.   
  25. <context-param>  
  26.     <param-name>shutdown-on-unload</param-name>  
  27.     <param-value>true</param-value>  
  28. </context-param>  
  29.   
  30. <listener>  
  31.     <listener-class>  
  32.         org.quartz.ee.servlet.QuartzInitializerListener  
  33.     </listener-class>  
  34. </listener>  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多