附录 A. Quartz 配置参考
本附录编写作为配置一个 Quartz 应用的快速参考。尽管这些信息在
Quartz 文档中都有,但是这个附录提供了一种更快的方式来查找配置属性和它们可能的值。
一. 主要的 Quartz
属性
表 A.1 列出了主要的 Scheduler 属性。它们用于声明和标识 Scheduler
和其他高层次的设置。
表 A.1. 主要的 Quartz Scheduler 属性
名称
|
必须
|
类型
|
默认值
|
|
org.quartz.scheduler.instanceName
|
否 |
String
|
'QuartzScheduler'
|
|
org.quartz.scheduler.instanceId
|
否 |
String
|
'NON_CLUSTERED'
|
|
org.quartz.scheduler.instanceIdGenerator.class
|
否 |
String
|
org.quartz.simpl.SimpleInstanceIdGenerator
|
|
org.quartz.scheduler.threadName
|
否 |
String
|
instanceName+'_QuartzSchedulerThread'
|
|
org.quartz.scheduler.idleWaitTime
|
否 |
Long
|
30000
|
|
org.quartz.scheduler.dbFailureRetryInterval
|
否 |
Long
|
15000
|
|
org.quartz.scheduler.classLoadHelper.class
|
否 |
String
|
org.quaartz.simpl.CascadingClassLoadHelper
|
|
org.quartz.context.key.SOME_KEY
|
否 |
String
|
None
|
|
org.quartz.scheduler.userTransactionURL
|
否 |
String
|
'java:comp/UserTransaction'
|
|
org.quartz.scheduler.wrapJobExecutionIn
UserTransaction
|
否 |
Boolean
|
false
|
|
org.quartz.scheduler.jobFactory.class
|
否 |
String
|
org.quartz.simple.SimpleJobFactory
|
|
·org.quartz.scheduler.instanceName
每个
Scheduler 必须给定一个名称来标识。当在同一个程序中有多个实例时,这个名称作为客户代码识别是哪个 Scheduler
而用。假如你用到了集群特性,你就必须为集群中的每一个实例使用相同的名称,以使它们成为“逻辑上” 是同一个 Scheduler
。
·org.quartz.scheduler.instanceId
每个 Quartz
Scheduler 必须指定一个唯一的 ID。这个值可以是任何字符串值,只要对于所有的 Scheduler 是唯一的。如果你想要自动生成的 ID,那你可以使用
AUTO
作为
instanceId
。从版本
1.5.1 开始,你能够定制如何自动生成实例 ID。见
instanceIDGenerator.class
属性,会在接下来讲到。
·org.quartz.scheduler.instanceIdGenerator.class
从版本
1.5.1 开始,这个属性允许你定制instanceId 的生成,这个属性仅被用于属性
org.quartz.scheduler.instanceId
设置为
AUTO
的情况下。默认是
org.quartz.simpl.SimpleInstanceIdGenerator
,它会基于主机名和时间戳来产生实例
ID 的。
·org.quartz.scheduler.threadName
可以是对于 Java
线程来说有效名称的任何字符串。假如这个属性未予指定,线程将会接受 Scheduler 名称 (
org.quartz.scheduler.instanceName
) 前附加上字符串 '
_QuartzSchedulerThread'
作为名称。
·org.quartz.scheduler.idelWaitTime
这个属性设置了当
Scheduler 处于空闲时转而再次查询可用 Trigger 时所等待的毫秒数。通常,你无需调整这个参数,除非你正使用 XA 事物,遇到了 Trigger
本该立即触发而发生延迟的问题。
·org.quartz.scheduler.dbFailureRetryInterval
这个属性设置
Scheduler 在检测到 JobStore 到某处的连接(比如到数据库的连接) 断开后,再次尝试连接所等待的毫秒数。这个参数在使用
RamJobStore
无效。
·org.quartz.scheduler.classLoadHelper.class
对于多数健状的应用,所使用的默认值为
org.quartz.simpl.CascadingClassLoadHelper
类,它会依序使用其他的
ClassLoadHelper
类,直到有一个能正常工作为止。你大概没必须为这个属性指定任何其他的类,除非有可能在应用服务器中时。当前所有可能的
ClassLoadHelper
实现可在
org.quartz.simpl
包中找到。
·org.quartz.context.key.SOME_KEY
这个属性用于向
"Scheduler 上下文" 中置入一个 名-值 对表示的字符串值。(见
Scheduler.getContext()
)。因此,比如设置了
org.quartz.context.key.MyEmail =
myemail@somehost.com
就相当于执行了
scheduler.getContext().put("MyEmail",
myemail@somehost.com
)
·org.quartz.scheduler.userTransactionURL
它设置了
Quartz 能在哪里定位到应用服务器的
UserTransaction
管理器的 JNDI
URL。默认值(未设定的话) 是
java:comp/UserTransaction
,这几乎能工作于所有的应用服务器中。Websphere
用户也许需要设置这个属性为
jta/usertransaction
。这个属性仅用于 Quartz 配置使用
JobStoreCMT
的情况,并且
org.quartz.scheduler.wrapJobExecutionInUserTransaction
被设定成了
true
。
·org.quartz.scheduler.wrapJobExecutionInUserTransaction
如果你要
Quartz 在调用你的 Job 的
execute
之前启动一个
UserTransaction
的话,设置这个属性为
true
。这个事物将在 Job 的
execute
方法完成和
JobDataMap
(假如是一个
StatefulJob
) 更新后提交。默认值为
false
。
·org.quartz.scheduler.jobFactory.class
这是所用的
JobFactory
的类名称。默认为
org.quartz.simpl.SimpleJobFactory
。你也可以试试
org.quartz.simpl.PropertySettingJobFactory
。一个 Job 工厂负责产生
Job 类的实例。
SimpleFactory
类是调用 Job 类的
newInstance()
方法。
PropertySettingJobFactory
也会调用
newInstance()
,但还会使用
JobDataMap
中的内容以反射方式设置 Job Bean 的属性。
[译者 Unmi 本篇后记] 从正式发布《Quartz Job Scheduling
Framework 中文版.chm 》之后到现在又快过去四个月的时间了,正如前面提到的那个 CHM
文件确实包含了绝大部份主体的内容,就差最后一个附录:Quartz
配置参考,说来也是个缺憾。耽搁的太久,每天都会发生很多事情,可是这几个月对我来太不平静,家庭的、个人的、工作上的事故接踵而至。既然想起来了,还是着手完成这个事吧,之后会汇入到先前那个
CHM 文件中的。况且也还不时有人提起关于翻译版权的问题,实际上通过了解确有不对,该如何呢?暂顶顶风了。
另外,在此提一下 org.quartz.scheduler.jobFactory,因为它简单的调用 Job 类的 newInstance() 方法来得到 Job
实例,所以你的 Job 要有一个无参构造方法。有一个网友使用 Quartz 在 Scheduler 初始化 Job 时碰到这样的错误:
严重:
An error occured instantiating job to be executed. job=
'jobDetailGroup1.jobDetail1'
org.quartz.SchedulerException: Problem
instantiating class 'steve.InvokeCmdAction$SimpleQuartzJob' [See nested
exception: java.lang.InstantiationException:
steve.InvokeCmdAction$SimpleQuartzJob]
at
org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:57)
at
org.quartz.core.JobRunShell.initialize(JobRunShell.java:132)
at
org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:387)
Caused
by: java.lang.InstantiationException:
steve.InvokeCmdAction$SimpleQuartzJob
at
java.lang.Class.newInstance0(Class.java:340)
at
java.lang.Class.newInstance(Class.java:308)
at
org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:55)
... 2
more
问题在于 Quartz 的 SimpleFactory 无法实例化
'steve.InvokeCmdAction$SimpleQuartzJob' 这个例,看这个类名,带个 $ 符号,很显然是写
InvokeCmdAction.java 文件中的,后来他把 SimpleQuartzJob 单独写在 SimpleQuartzJob.java
文件中问题即得到解决。如若有兴趣的话,定制自己的 JobFactory 配置给 org.quartz.scheduler.jobFactory 属性,那对于
'steve.InvokeCmdAction$SimpleQuartzJob' Job 类也是可以成功实例化的。
原文地址:http://www.blogjava.net/Unmi/archive/2008/12/20/247455.html
相关推荐
quartz 配置文件 ,很详细,带注释 ,我觉得挺好的,可以参考,够了,
本人花费多日时间,亲测有效。所需文件代码完整,只需导入常用开发IDE和mysql数据库即可正常使用。
Spring集成quartz跑定时任务实例 自己写的例子并为实现job 有测试的主函数,请参考...springCon.quartz文件夹下 为对上诉博客理解透彻 结合spring看其配置的相关信息 就可以明白。
待完善。简单的例子,免费下载。参考http://www.meiriyouke.net/?p=82 谢谢原作者 也谢谢ZJ
有了它,quartz不再抽象。 资源来自于互联网,Chuck Cavaness 著 Unmi(隔叶黄莺) 译 。 主要内容: 1.quartz起步和简单示例 2.Job部署、存储和持久化 3.Cron触发器及相关内容 4.实现Quartz监听、...8.附录:配置参考
主要介绍了Spring+Quartz配置定时任务实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
说明:参考了公司的一些项目以及springside,集成了一些常用框架,特色功能如下: shiro: 1.支持shiro数据库配置权限。 2.支持在方法级别上控制权限。 quartz: 1.页面配置Trigger以及选择Job任务来开启定时器。 2...
C# 控制台实现quart.net3.0.7和topshelf实现windows服务,参考了quart.net的例子进行改进,修改了日志使用工具类,可以直接拿来作为项目进行开发使用。
主要介绍了Quartz实现JAVA定时任务的动态配置的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
内容提要:运行 Quartz 集群节点,及提供了一个关于使用 Quartz 集群的 Cookbook 参考。 第十二章. Quartz Cookbook (第一部分) 内容提要:Scheduler 相关的 Cookbook,Scheduler 的创建、启动、停止、暂停。 第十...
Quartz是Java领域最著名的开源任务调度工具。Quartz提供了极为广泛的特性如持久化任务,集群和分布式任务等,下面这篇文章主要给大家介绍了关于Quartz集群原理以及配置应用的相关资料,需要的朋友可以参考下
下面小编就为大家带来一篇quartz定时执行任务,并配置web.xml的操作方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要为大家详细介绍了Quartz.Net调度框架的配置方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了在Java的Spring框架中配置Quartz的教程,Quartz是一款高人气的开源作业调度框架,需要的朋友可以参考下
本篇文章主要介绍了springboot整合Quartz实现动态配置定时任务的方法,非常具有实用价值,需要的朋友可以参考下
到目前为止,该书除前言部分、配置参考及附录未翻译之外,主体内容的翻译已大功告成。也算是基本了却了一桩心愿,当然对于落下的几小部分还会补充进来。 现把本人博客上零零散散,顺序错乱的各篇译章汇集成册,做成...
本篇文章主要介绍了Spring集成Quartz的简单配置的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Quartz是一个完全由java编写的开源作业调度框架,下面提供一个小例子供大家参考,还有在servlet配置的方法
下面小编就为大家带来一篇spring和quartz整合,并简单调用(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要给大家介绍了关于spring boot + quartz集群搭建的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧