首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Quartz 配备参考

2012-09-07 
Quartz 配置参考Scheduler.getContext())。因此,比如设置了 org.quartz.context.key.MyEmail myemail@som

Quartz 配置参考
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

?

热点排行