锁定老帖子 主题:Quartz任务监控管理 (1)
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-30
最后修改:2009-09-30
引用 看我的初始化方法这样处理是否可以?但我做了测试,好像还是不行,把init-method="init" 去掉,另外一台机器就没问题了。我怀疑也是集群的事,同一个trigger不支持多个服务器访问。不知道LZ能有什么好的建议?
请参考《quatrz 任务监控管理 (2)》http://www.iteye.com/topic/480405的实现中,init这个方法己经从SchedulerServiceImpl去掉了,不再需要。同一个trigger多个服务器访问属于集群,quartz是支持集群的,但是在配置上有点差别,你的应用是需要集群吗 |
|
返回顶楼 | |
发表时间:2009-09-30
最后修改:2009-09-30
引用 我的意思是想,如果数据库里没有trigger,那就创建一个,如果没有job,那也新建一个,直接在spring初始化的时候就操作,这样就不用我们认为的去添加trigger和job了,tomcat启动后就自动执行了。这样不知道会出问题不?
根据你以上的需求,你只要用spring+quartz的简单配置就能满足了,不用持久化,也不用序列化,你用静态配置就行了,《quartz任务监控》说的是动态配置任务可能并不适合你了。 applicationContext-quartz.xml的配置 <bean id="schedulerTrigger" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="trigger1"/> <ref bean="trigger2"/> </list> </property> </bean> <!-- 每天凌晨1点执行 --> <bean id="jobDetail1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="xxxService1" /> <property name="targetMethod" value="testMethod1" /> </bean> <bean id="trigger1" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="jobDetail1" /> <property name="cronExpression" value="0 0 1 ? * * *" /> </bean> <!--执行50次结束--> <bean id="jobDeail2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="xxxService2" /> <property name="targetMethod" value="testMethod2" /> </bean> <bean id="trigger2" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="jobDeail2" /> <property name="startDelay" value = "4"/> <property name="repeatCount" value = "50" /> <property name="repeatInterval" value = "1000" /> </bean> xxxService1是你的业务类,不用实现序列化接口,testMethod1是xxxService1的一个方法,执行调试任务的方法。 你的需求只需要这样简单配置就行了,tomcat启动后就会触发trigger1,trigger2了,trigger1会在每天1点触发xxxService1的testMethod1方法,trigger2会在服务启动后触发xxxService2的testMethod2方法,执行50次结束。因为不用持久化了,你写的所有类都不用实现序列化接口,也不会出现事务问题了,也不出现你所说的多个tirgger问题了,你前面所说的所有问题都没有了。 |
|
返回顶楼 | |
发表时间:2009-09-30
Quartz任务监控的完善版,请看《Quartz 任务监控 (2)》http://sundoctor.iteye.com/admin/blogs/480405
|
|
返回顶楼 | |
发表时间:2009-10-06
非常感谢lz,这样果然可以,但我听网上好多网友说,这样的静态配置会出问题,不知是否有此情况发生?
|
|
返回顶楼 | |
发表时间:2009-10-06
zxt1985 写道 非常感谢lz,这样果然可以,但我听网上好多网友说,这样的静态配置会出问题,不知是否有此情况发生?
绝对不会出问题,简单应用用静态配置就可以了。 |
|
返回顶楼 | |
发表时间:2010-01-27
新手求教:
示例的后台数据表是自动创建还是手工创建的,如果是自动创建,为什么我部署启动后,后台报找不到数据表的错误?如果是手工创建,请告诉我表结构,谢谢! |
|
返回顶楼 | |
发表时间:2010-01-27
firstpub7603 写道 新手求教:
示例的后台数据表是自动创建还是手工创建的,如果是自动创建,为什么我部署启动后,后台报找不到数据表的错误?如果是手工创建,请告诉我表结构,谢谢! 手工创建 |
|
返回顶楼 | |
发表时间:2010-01-29
手工创建,在Quartz发行包的docs\dbTables目录包含有各种数据库对应脚本
|
|
返回顶楼 | |
发表时间:2010-06-13
java.lang.RuntimeException: org.quartz.JobPersistenceException: Couldn't store trigger 'MYTRIGGER&a2631a51-b447-4543-80a4-cda67f207282' for 'jobDetail' job:The job (DEFAULT.jobDetail) referenced by the trigger does not exist. [See nested exception: org.quartz.JobPersistenceException: The job (DEFAULT.jobDetail) referenced by the trigger does not exist.]
这是怎么回事啊? |
|
返回顶楼 | |
发表时间:2010-07-24
楼主是个热心人
我在你的指导下 详细看了你的代码 也封装出了自己需要的任务调度器 灵活度更高,脱离了配置文件 |
|
返回顶楼 | |