日期:2014-05-18  浏览次数:20595 次

web开发中定时计划Quartz问题
没有用spring 这样的话就没办法使用spring+Quartz来做定时任务了
项目采用的servlet+jdbc的方式进行开发。网上也找到了这种方式做定时任务的方法
还是使用Quartz.来实现。先说下大体实现步骤:
jar包导入进去。加入quartz.properties和quartz_job.xml 然后再web.xml中配置一个监听。然后写一个类实现job接口 该类就是任务类。
这样做实现了定时计划 但是现在又几个问题:
第一个问题:我发现,在执行的时候 为什么同一时间执行2次。quartz_job.xml 如下配置:
<?xml version="1.0" encoding="UTF-8"?> 
<quartz>  
  <job>  
    <job-detail>  
      <name>statisticsBid</name>  
      <group>statisticsBid</group>  
      <job-class>net.gy_center.servlet.StatisticsBidServlet </job-class>  
    </job-detail>  
    <trigger>  
      <cron>  
        <name>test</name>  
        <group>statisticsBid</group>  
        <job-name>statisticsBid</job-name>  
        <job-group>statisticsBid</job-group>  
        <cron-expression> 0/20 * * * * ?</cron-expression>  //每分钟的每隔20秒执行一次
     </cron>  
    </trigger>  
  </job> 
<quartz>  
任务类如下:
public class StatisticsBidServlet  implements Job{
    static int i=1;
public void execute(JobExecutionContext arg0) throws JobExecutionException {
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s=sf.format(new Date());
System.out.println("第"+i+"次定时执行啦"+s);
i++;
}
}
这样测试的结果却是:
第1次定时执行啦2013-02-27 16:56:40
第1次定时执行啦2013-02-27 16:56:40

第2次定时执行啦2013-02-27 16:57:00
第2次定时执行啦2013-02-27 16:57:00
的确实每隔20秒执行但是在同一时间却打印了两次???这是为什么??

问题二:
    上面我只是一个任务,现在系统需求又要用到定时任务了。我想把上面那个任务和现在这个需求任务弄到一个任务类里面。然后里面执行2个方法就是。但是在quartz_job.xml里面如何配置呢?如何才能指定其执行的方法呢?
  
quartz web开发 任务 spring servlet

------解决方案--------------------
先要搞清楚的是每个Job是由谁来定时执行的
------解决方案--------------------
时间表达式什么时候带/了,去掉
------解决方案--------------------
楼主,你的quartz_job.xml 文件在哪里引用了?
如果你在web.xml和applicationContext.xml里面都引用了,那么问题就在这里,被加载了两次,同一时刻当然会执行两次了