论坛首页 Java企业应用论坛

Quartz任务监控管理 (1)

浏览 73631 次
该帖已经被评为精华帖
作者 正文
   发表时间:2009-09-30   最后修改:2009-09-30
引用
看我的初始化方法这样处理是否可以?但我做了测试,好像还是不行,把init-method="init" 去掉,另外一台机器就没问题了。我怀疑也是集群的事,同一个trigger不支持多个服务器访问。不知道LZ能有什么好的建议?


请参考《quatrz 任务监控管理 (2)》http://www.iteye.com/topic/480405的实现中,init这个方法己经从SchedulerServiceImpl去掉了,不再需要。同一个trigger多个服务器访问属于集群,quartz是支持集群的,但是在配置上有点差别,你的应用是需要集群吗
0 请登录后投票
   发表时间: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问题了,你前面所说的所有问题都没有了。
0 请登录后投票
   发表时间:2009-09-30  
Quartz任务监控的完善版,请看《Quartz 任务监控 (2)》http://sundoctor.iteye.com/admin/blogs/480405
0 请登录后投票
   发表时间:2009-10-06  
非常感谢lz,这样果然可以,但我听网上好多网友说,这样的静态配置会出问题,不知是否有此情况发生?
0 请登录后投票
   发表时间:2009-10-06  
zxt1985 写道
非常感谢lz,这样果然可以,但我听网上好多网友说,这样的静态配置会出问题,不知是否有此情况发生?


绝对不会出问题,简单应用用静态配置就可以了。
0 请登录后投票
   发表时间:2010-01-27  
新手求教:
示例的后台数据表是自动创建还是手工创建的,如果是自动创建,为什么我部署启动后,后台报找不到数据表的错误?如果是手工创建,请告诉我表结构,谢谢!
0 请登录后投票
   发表时间:2010-01-27  
firstpub7603 写道
新手求教:
示例的后台数据表是自动创建还是手工创建的,如果是自动创建,为什么我部署启动后,后台报找不到数据表的错误?如果是手工创建,请告诉我表结构,谢谢!

手工创建
0 请登录后投票
   发表时间:2010-01-29  
手工创建,在Quartz发行包的docs\dbTables目录包含有各种数据库对应脚本
1 请登录后投票
   发表时间: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.]


这是怎么回事啊?
0 请登录后投票
   发表时间:2010-07-24  
楼主是个热心人
我在你的指导下
详细看了你的代码
也封装出了自己需要的任务调度器
灵活度更高,脱离了配置文件
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics