quartz常见问题

原创 2012年03月31日 14:00:45

一、配置job的xml里<start-time>的时间格式:

从源码JobSchedulingDataProcessor类中可以看出:格式例如(2012-03-31T05:55:00)

    /**
     * XML Schema dateTime datatype format.
     * <p>
     * See <a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#dateTime">
     * http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#dateTime</a>
     */
    protected static final String XSD_DATE_FORMAT = "yyyy-MM-dd'T'hh:mm:ss";

 

二、quartz.properties配置filename:

应该是org.quartz.plugin.jobInitializer.fileNames = my_quartz_jobs.xml

而不是org.quartz.plugin.jobInitializer.fileName = my_quartz_jobs.xml

这个应该和quartz的jar包版本有关,具体哪个版本使用哪个么有研究。

否则可能会报错:

Exception in thread "main" org.quartz.SchedulerException: JobStore SchedulerPlugin 'org.quartz.plugins.xml.JobInitializationPlugin' props could not be configured. [See nested exception: java.lang.NoSuchMethodException: No setter for property 'fileName']
 at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1013)
 at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1399)
 at org.quartz.impl.StdSchedulerFactory.getDefaultScheduler(StdSchedulerFactory.java:1415)
 at com.gyb.JobScheduler.startScheduler(JobScheduler.java:28)
 at com.gyb.JobScheduler.main(JobScheduler.java:23)
Caused by: java.lang.NoSuchMethodException: No setter for property 'fileName'
 at org.quartz.impl.StdSchedulerFactory.setBeanProps(StdSchedulerFactory.java:1287)
 at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1011)
 ... 4 more

 

 

 附:网上整理的问题

问题1.
应用服务器启动状态下,当对任务进行了修改时(即修改了job.xml中的任务明细),Quartz无法响应这种变化.也就是说,Quartz并没有进行"有状态"作业!
需求:
无论是修改了任务明细中的参数列表--JobDataMap,或是CronExpression中的定时表达式,都应该立即做出响应,并按照新的配置参数去执行这个任务.
解决: 
在quartz.properties中加入下面两行配置即可:
#自动扫描任务单并发现改动的时间间隔,单位为秒
org.quartz.plugin.jobInitializer.scanInterval = 10
#覆盖任务调度器中同名的jobDetail,避免只修改了CronExpression所造成的不能重新生效情况
org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
 
问题2:
测试任务单变更自检的问题时,突然发现,当通过web页面提供的任务配置接口进行报表订阅任务的新增、修改等操作时,由于job.xml是在classes目录下,所以tomcat会进行自动的reload(hot deploy).这看起来好象没什么问题,但在实际的应用环境下却非常危险,因为web.xml中配置的随tomcat启动而启动的程序都会reload.可能这些程序很简单,并不会产生什么问题,但我们的软件则不同,随tomcat的启动,会有很多服务被启动并进行着极为复杂的操作,所以classes目录下的程序配置项都不会轻易修改.即使是修改,那也会重新启动tomcat使服务正常运转. 修改了任务单后发现某个服务出现了Illegal Access问题.
解决:
Quartz的两个主要配置文件名称可变,而且是从web.xml加载quartz.properties,又从quartz.properties找到job.xml,那么job.xml没必要放到classes目录下。拿到web目录下,就放到config/job.xml,然后修改quartz.properties文件,将文件指向修改成绝对路径:
org.quartz.plugin.jobInitializer.fileName = D:/tomcat/webapps/report/config/job.xml
job.xml无论如何变更,tomcat都不会reload,因为它已经不在classes目录下了。
 
问题3:
在Debug过程中,发现Quartz的一个小问题,可能会对资源造成无谓的占用,那就是当一个任务从job.xml中被删除时,Quartz是不会响应这种减少任务的改变且此任务的进程仍然被占用,而且任务还会被执行。
解决:
可以考虑在JobDataMap中增加是否执行的配置项,即使任务会执行,但根据这种配置项,仍然可以拒绝下一步的操作.当然了,修改CronExpression使之成为一个永远不会执行到的时间也是一个办法.
 
问题4:
如何使Quartz加载多个job.xml
解决:
实现SchedulerPlugin接口并提供多任务文件加载功能,将会是解决这个事情的好方法

 

 

 

quartz常见问题

一、配置job的xml里的时间格式: 从源码JobSchedulingDataProcessor类中可以看出:格式例如(2012-03-31T05:55:00)     /** ...
  • school11
  • school11
  • 2014年12月04日 16:59
  • 548

Quartz之手动启动和关闭定时器简单示例

开心一笑考路考那天,上午有个驾校带来的15个人全军覆没了,原因是有个女孩子很紧张,路考车上,监考教官看她一直发抖,心生怜悯安慰她:“小姑娘,你别怕,我又不吃人。”这女孩子转过头笑着说:“没事,我不怕,...
  • huangwenyi1010
  • huangwenyi1010
  • 2016年05月07日 16:07
  • 7070

Quartz入门例子简介 从入门到菜鸟(一)

刚接触quartz这个词并不是在学习过程中。。。而是WOW里面的界面插件。。。 汗=。=  言归正传,入门教程,不喜勿喷。  网上看到一些定时任务使用Timer来解决,但是在多任务的情况下...
  • zhuce0001
  • zhuce0001
  • 2016年11月19日 22:58
  • 1700

Quartz集群原理及配置应用,实例使用

使用 Quartz 需要数据库内建立12张表,如下。建表顺序需要注意。因为有的表有外键, /*DDL 信息*/------------ # 建表顺序 1 CREATE TABLE `qrtz_cale...
  • zhen340417593
  • zhen340417593
  • 2016年12月09日 10:43
  • 2344

quartz有哪些特性

Example 5 - Handling Job Misfires
  • TotoroCoder
  • TotoroCoder
  • 2014年09月29日 18:50
  • 897

Quartz体系结构

Quartz的核心主要包括三部分:任务(Job)、触发器(Trigger)和调度器(Scheduler),其中Scheduler是整个系统框架的心脏和灵魂。 1、任务Job job是一个接口,只有一个...
  • yanlianglu
  • yanlianglu
  • 2015年08月13日 17:34
  • 734

Spring quartz 任务调度(注解方式)

1.maven org.quartz-scheduler quartz 1.8.5 ...
  • u014201191
  • u014201191
  • 2015年09月09日 20:50
  • 2716

定时任务Quartz超详细教程

看到一篇比较好的关于Quartz定时任务的详细介绍就想发出来,但是原博主博客打不开了。我只能发一波,希望喜欢的速来查看。。。。。 下载地址:http://download.csdn.ne...
  • flower_vip
  • flower_vip
  • 2017年05月26日 17:36
  • 3156

quartz 多线程如何规避同一时刻执行同一JOB两个或两个以上

前面我们已经介绍了quartz的用法,主要是用于定时操作 java自动运行任务job---quartz的运用 但是我们发现如果同一个job同一时刻运行,可能造成重复入库的情况。...
  • tiantangpw
  • tiantangpw
  • 2014年11月14日 16:10
  • 6717

quartz所需表的说明

Quartz将Job保存在数据库中所需表的说明   http://blog.iqbon.com/doc/364.html   (将Quartz持久化到数据库的做法) QRTZ_CAL...
  • ye_sheng
  • ye_sheng
  • 2015年09月12日 18:19
  • 3317
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:quartz常见问题
举报原因:
原因补充:

(最多只允许输入30个字)