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里面都引用了,那么问题就在这里,被加载了两次,同一时刻当然会执行两次了