`

Quartz 配置参考

阅读更多
Quartz Job Scheduling Framework
2009-03-21 03:22

附录 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配置

    quartz 配置文件 ,很详细,带注释 ,我觉得挺好的,可以参考,够了,

    定时器(quartz+spring)读取数据库配置

    在提供的压缩包文件“quartz项目资料”中,可能包含了关于如何设置Quartz与Spring集成的详细示例代码、数据库脚本、配置文件等,你可以进一步学习和参考。通过实践这些资料,你将能够更好地理解和掌握如何利用Quartz...

    Quartz2.2.1基于Spring注解方式配置Quartz

    Quartz是一款开源的作业调度框架,它允许开发者在Java应用程序中定义定时任务。...对于深入学习Quartz,可以参考《QuartzLearningChapter1_3》等资料,进一步了解其核心概念、API使用以及高级特性。

    quartz整合springbatch动态集群定时实现mysql参考

    1. **Quartz配置**:定义了调度器、作业和触发器的配置,可能使用了`org.springframework.scheduling.quartz.SchedulerFactoryBean`来初始化Quartz。 2. **Spring Batch配置**:包含了作业和步骤的定义,以及读取和...

    Quartz集群配置和示例源码

    Quartz提供了SQL脚本供用户参考。 - **配置文件**:在quartz.properties文件中,配置Job Store类型为DBJobStore,同时配置数据库连接信息,如JDBC驱动、URL、用户名和密码。 ```properties # 使用数据库存储Job和...

    SpringMVC利用Quartz实现可配置的定时器

    在提供的压缩包文件"QuartzTask4Spring"中,可能包含了实现上述步骤的示例代码,包括Job类、Trigger配置以及Spring的配置文件等,供开发者参考学习。通过阅读和理解这些代码,可以加深对SpringMVC与Quartz整合的理解...

    springboot+quartz集群:通过动态配置调度dubbo接口/http接口代码实现

    在"springboot+quartz-cluster"的场景下,我们需要配置Quartz集群,确保任务在多个实例之间进行负载均衡,并且能够在节点故障时自动恢复。 MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射...

    Quartz持久化参考资料大全

    同时,指定JobStore类型为`org.quartz.impl.jdbcjobstore.JobStoreTX`,并配置表名前缀,以避免与现有数据库表冲突。 接下来,创建必要的数据库表。Quartz提供了SQL脚本来创建所需的表结构,这些脚本通常可以在...

    quartz实例,quartz入门例子

    Quartz是一款开源的作业调度框架,它允许开发者创建、组织和执行计划任务。这个实例是为初学者设计的,用于帮助理解Quartz的基本概念和使用...同时,也可以参考官方文档和其他在线教程,扩展对Quartz的深入理解和应用。

    Quartz2.2.1存储与持久化-基于Spring的配置

    在学习过程中,可以参考《QuartzLearningChapter2_2》这个压缩包中的文档和示例代码,进一步理解Quartz的配置和使用方法。这个压缩包可能包含了详细的教程、示例项目以及相关的SQL脚本,帮助你加深对Quartz在Spring...

    Quartz.NET 官方源码及演示例子

    6. **database**:可能包含示例数据库脚本或配置,用于设置和测试Quartz.NET的作业存储。 7. **src**:源代码目录,包含Quartz.NET的源码,开发者可以查看和学习其内部工作原理。 8. **lib**:库文件夹,可能包含...

    quartz+spring分布式集群调度

    Quartz是一款开源的作业调度框架,它允许程序创建并管理作业和触发器,实现任务的自动执行。结合Spring,可以方便地在企业级应用中实现...而提供的"spring-quartz"示例则为学习和实践这一方案提供了宝贵的参考资料。

    spring3+ quartz1.8使用以及eclipse代码

    2. Quartz配置文件 创建`quartz.properties`文件,配置Quartz的数据库连接、线程池大小等信息: ``` org.quartz.scheduler.instanceName=MyScheduler org.quartz.threadPool.class=org.quartz.simpl....

    quartz整合springbatch定时集群实现mysql参考模版

    首先,你需要在Spring配置中声明一个QuartzScheduler,并设置JobStore类型为支持集群的JDBCJobStore。接着,定义一个SpringBatch的Job,并将其注册为Quartz的JobDetail。然后,创建Trigger来指定Job的执行时间。这样...

    Quartz案例二.zip

    Quartz是一款开源的作业调度框架,它允许开发者创建和管理定时任务,广泛应用于Java应用程序中。这个"Quartz案例二.zip...同时,这个案例也可以作为模板,为你的项目提供参考,帮助你在实际工作中更有效地使用Quartz。

    quartz入门例子,spring集成配置使用

    Spring集成quartz跑定时任务实例 自己写的例子并为实现job 有测试的主函数,请参考...springCon.quartz文件夹下 为对上诉博客理解透彻 结合spring看其配置的相关信息 就可以明白。

    spring quartz定时任务demo

    总的来说,“spring quartz定时任务demo”提供了一个直观的教程,帮助开发者理解如何在Spring项目中配置和使用Quartz进行定时任务的创建和管理。通过这个例子,你可以快速学习到如何定义Job,如何配置Trigger,以及...

    Quartz.NET-0.6

    8. **doc**: 文档目录,可能包含API参考文档或其他技术文档,帮助开发者更好地理解和使用Quartz.NET。 使用Quartz.NET,你可以创建一次性或周期性的任务,支持并发执行,同时还可以设置任务之间的依赖关系。此外,...

    quartz2.2.1帮助手册

    通过阅读提供的"quartz_documentation"文档,开发者可以了解到如何配置 Quartz 定时器,如何创建和调度 Job,如何设置 Trigger,以及如何处理并发问题和异常情况。此外,文档还会涵盖高级特性,如作业和触发器的关联...

    Java_Spring与Quartz的整合

    Java Spring 框架是...同时,提供的压缩包文件中并没有包含具体代码示例,若需具体示例,可以参考开源项目或相关教程,如`MavenSpirngmvcMybatis-master`可能是一个包含Spring MVC、MyBatis和Quartz整合的示例项目。

Global site tag (gtag.js) - Google Analytics