Web Application中使用Quartz

来源:互联网 发布:javascript编程精解 编辑:程序博客网 时间:2024/06/07 05:57
有时间简述一下
做过的东西最好能及时记录下来,拖了一个月,都提不起写它的兴趣了,而且有些细节也已经不太想的起来。
下面是我在项目中用到的一个简单案例,并没有全面的讲解Quartz,但是至少可以在程序中跑起来了。要想了解更多的东西,可以去看官方的文档,另外有一本译著也不错,替他打个广告
***********************************************
Quartz Job Scheduling Framework 中    文    版 
Chuck Cavaness 著
Unmi(隔叶黄莺) 译
译者博客:
http://unmi.blogjava.net/
***********************************************

继续我的内容。本篇介绍怎么在Web Application中加入Quartz 并执行简单的工作调度。

1) 在web.xml中配置Quartz,使它在装载Application时就启动Quartz

 <!-- Start: Quartz servlet configuration -->
 <servlet>
  <description></description>
  <display-name>Quartz Initializer Servlet</display-name>
  <servlet-name>QuartzInitializerServlet</servlet-name>
  <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <!-- End: Quartz servlet configuration -->

2) 在quartz.properties中配置两个参数

#自定义instance name,通常和项目相关,不是关键属性
org.quartz.scheduler.instanceName = myProjectName

#文件名自定,只要有一个对应的文件即可
org.quartz.plugin.jobInitializer.fileNames= quartz-jobs.xml

3) 配置quartz-job.xml
 
这里定义一个调度器,包括需要调用的job,并设置调用该job的触发器。设置触发器时注意时间的格式。
 
job可以定义多个,下面例子中只定义了一个。
 
<?xml version='1.0' encoding='utf-8'?>
<quartz xmlns="http://www.quartzscheduler.org/ns/quartz"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.quartzscheduler.org/ns/quartzhttp://www.quartzscheduler.org/ns/quartz/job_scheduling_data_1_1.xsd"
 version="1.1">
 <job>
  <job-detail>
   <name>CollectJob</name>
   <group>CollectJobs</group>
   <job-class>com.xxx.CollectJob</job-class>
   <volatility>false</volatility>
   <durability>false</durability>
   <recover>false</recover>
  </job-detail>
  <trigger>
   <simple>
    <name>CollectTrigger</name>
    <group>DEFAULT</group>
    <job-name>CollectJob</job-name>
    <job-group>DEFAULT</job-group>
    <start-time>2008-11-30T10:00:00 AM</start-time>
    <!-- repeat indefinitely every day -->
    <repeat-count>-1</repeat-count>
    <repeat-interval>7200000</repeat-interval>
   </simple>
  </trigger>
 </job>
</quartz>
 
4) 实现com.xxx.CollectJob,定义该job的具体事件
public class CollectJob implements Job {
 private static Logger logger = Logger.getLogger(CollectJob.class.getName());
 /**
  * Get logger for collect job.
  *
  * @return logger
  */
 public static Logger getLogger() {
  return logger;
 }
 
 public void execute(JobExecutionContext context)
   throws JobExecutionException {
  long collectorStartTime = System.currentTimeMillis();
  logger.info("Collector: " + context.getJobDetail().getName()
    + " started at " + new Date());
  
  doSomething();
 
  logger.info("Collector: " + context.getJobDetail().getName()
    + " ended at " + new Date());
  long collectorEndTime = System.currentTimeMillis();
  logger.info("It costs " + (collectorEndTime - collectorStartTime)
    + " milliseconds.");
 }
 
 private void doSomething() {
  ...
 }
}

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 血液里有微生物怎么办 机械硬盘不显示怎么办 六安建筑机械租赁公司怎么办 别墅楼梯太陡怎么办 不锈钢楼梯太陡怎么办 真皮白色鞋脏了怎么办 白色牛皮包脏了怎么办 白色羊皮鞋脏了怎么办 白色真皮染色了怎么办 白色漆皮鞋脏了怎么办 对鉴定结果不服怎么办 洗衣机入水口堵塞怎么办 华科办临时饭卡怎么办 血浆乳酸测定高怎么办 olay大红瓶过敏怎么办 饥一顿饱一顿怎么办 朝鲜人向去韩国怎么办? 我是超级大方脸怎么办 被精神病砍断四根筋怎么办 40小时不睡觉怎么办 边防转业军人安置不好怎么办 转业军人孩子读书怎么办玉环 军官证丢了怎么办 飞行学员停飞了怎么办 丹东港债券违约怎么办 对村党支部贿选怎么办 马自达2油耗高怎么办 马自达1.5油耗高怎么办 马自达5停产配件怎么办 期货账户休眠了怎么办 低于二本线怎么办 听力测试不过关怎么办 安装的天正过期怎么办 天正t20v4过期了怎么办 鸡肉菊花一起吃怎么办 孕妇误食马兰头怎么办 孕29周喉咙痛怎么办 哺乳期吃了当归怎么办 哺乳期喝了茶水怎么办 大人感染eb病毒怎么办 下面一直有血怎么办