quartz + spring定时任务调度,不执行调度任务,给指点一下吧
Quartz jar是1.8.6 Spring3.0搭建的项目:
调度类: public class CerpToCposJobBeanService { private SmartMenuScheduleService smartMenuScheduleService; protected void runWork( ) { System.out.println("========"); } public SmartMenuScheduleService getSmartMenuScheduleService() { return smartMenuScheduleService; } public void setSmartMenuScheduleService(SmartMenuScheduleService smartMenuScheduleService) { this.smartMenuScheduleService = smartMenuScheduleService; } }
XML配置内容
<!-- 定义job --> <bean name="mathsJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 注入的service层 --> <property name="targetObject" ref="cerpToCposMenuJob" /> <!-- 调用的方法 --> <property name="targetMethod" value="runWork" /> <!--concurrent为true,则允许一个QuartzJob并发执行,否则就是顺序执行 --> <property name="concurrent" value="false" /> </bean> <!-- 定义CronTriggerBean触发器 --> <bean id="mathsTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean"> <!-- 注入需要出发的job --> <property name="jobDetail"> <ref bean="mathsJob" /> </property> <!-- 触发的规则,这里是 每天的凌晨1点触发 --> <property name="cronExpression"> <value>0/10 * * * * ?</value> </property> </bean> <!-- 启动触发器的配置开始 --> <bean name="startQuertz" lazy-init="true" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="startupDelay" value="60" /> <property name="triggers"> <list> <ref bean="mathsTriggerBean" /> </list> </property> </bean> <!-- 启动触发器的配置结束 -->
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
首先,我觉得你第一件事情是查看spring的文档,其实spring文档是有和quirtz的整合例子,把例子跑一遍,基本就懂了
回复
<bean id="clearAndResetTimerTask" class="com.dc.gameserver.serverCore.service.timerTask.clearAndResetTimerTask"/>
<bean id="clearAndResetTimerTaskjobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="clearAndResetTimerTask"/>
<property name="targetMethod" value="executeTimerTask"/>
</bean>
<bean id="cardBoxTimerTaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="clearAndResetTimerTaskjobDetail" />
<!--<property name="cronExpression" value="0/5 * * * * ? " />-->
<!--凌晨12点执行一次-->
<property name="cronExpression" value="0 0 0 * * ? " />
</bean>
<bean id="cardBoxTimerTaskScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" >
<property name="configLocation" value="file:res/quratzConfig/quartz.properties"/>
<property name="quartzProperties">
<props>
<prop key="org.quartz.scheduler.skipUpdateCheck">true</prop>
</props>
</property>
<property name="triggers" ref="cardBoxTimerTaskTrigger"/>
</bean>
贴一个参考 另外 貌似版本也会导致一些莫名的问题 我目前版本就是 spring 3.2.5 qurtaz 1.8.6
很有可能是时差问题导致的,比如jvm用的时间和服务器时间是不同的。
<property name="targetObject" ref="cerpToCposMenuJob" /> 这里有引用在上面写过这个been
把你的
runWork那个类配置在xml就可以了 <bean class=""/>