quartz任务在linux下第二天不执行问题

lxlucky 2016-06-15 10:45:03
我配置了一个任务是每天7点执行,可是第二天却不会执行。难道我的cron表达式有问题吗?
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

<!-- 调度器 -->
<bean id="springJobSchedulerFactoryBean" class="com.qz.quartz.SchedulerFactoryBeanWithShutdownDelay">
<property name="triggers">
<list>
<ref bean="autoExportTrigger"/>
<ref bean="autoSendMailTrigger"/>
</list>
</property>
</bean>

<!-- 导出报表的触发器 -->
<bean id="autoExportTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="autoExportDetail"/>
</property>
<property name="cronExpression">
<value>0 0 7 * * ?</value>
</property>
</bean>

<!-- 自动发送mail的触发器 -->
<bean id="autoSendMailTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="autoSendMailDetail"/>
</property>
<property name="cronExpression">
<value>0 0 8 * * ?</value>
</property>
</bean>


<bean id="autoExport" class="com.qz.quartz.ExportDepartmentDataReport"></bean>
<bean id="autoSendMail" class="com.qz.quartz.AutoSendMail"></bean>

<!-- 导出报表的调度任务-->
<bean id="autoExportDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="autoExport"/>
</property>
<property name="targetMethod">
<value>export</value>
</property>
</bean>

<!-- 自动发送mail调度任务 -->
<bean id="autoSendMailDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="autoSendMail"/>
</property>

<property name="targetMethod">
<value>sendText</value>
</property>
</bean>

</beans>
...全文
488 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxlucky 2016-08-02
  • 打赏
  • 举报
回复
有多方面原因 1、是因为使用的是date使用data会出现时间不对情况,使用calendar则不会出现这个问题 2、与linux下的文件夹权限也有关系,我的任务是定时导出报表,不给文件夹权限,会导致写不进去
冰灵_SH 2016-06-17
  • 打赏
  • 举报
回复
我在想 你 的 服 务 器 时 间 是 和 网 络 时 间 同 步 的 吗 ??!如 果 不 同 步 ,还 没 到 时 间 就 不 会 执 行 呀 .
qq_27351659 2016-06-17
  • 打赏
  • 举报
回复
你日志里面找下看是否执行成功吗
darkread 2016-06-17
  • 打赏
  • 举报
回复
所以,把日志打细致一点看看。然后concurrent=false,这样统一任务上一个不执行完,后一个不执行。
darkread 2016-06-17
  • 打赏
  • 举报
回复
Quartz有总线程数控制,如果线程全部没有终结,新任务不执行。
codelabs 2016-06-16
  • 打赏
  • 举报
回复
看一下是不是数据有误。spring quartz执行时,如果数据有误的话,不会报错,但也不会执行调度逻辑,后续一次也不会执行的。我这边遇到过的情况是:DB中调度数据,结果某一行数据中的某个字段为空了,导致这批数据一次都没有执行,后续也没有任何执行动作。待这个空字段补齐后,一切OK了。
lxlucky 2016-06-15
  • 打赏
  • 举报
回复
我查看了日志,日志没有异常。
Bug开发攻城狮 2016-06-15
  • 打赏
  • 举报
回复
你的cron表达式是没问题的,你看下,是不是你代码执行了但是没执行成功,或者你服务器挂了
lxlucky 2016-06-15
  • 打赏
  • 举报
回复
可不可能是因为其他问题呢
lxlucky 2016-06-15
  • 打赏
  • 举报
回复
我看了日志信息是没有错误的
Sniper_First 2016-06-15
  • 打赏
  • 举报
回复
我记得执行定时任务有两种方式,一种是:这次发生错误下次就不执行了。另外一种是:这次发生错误,下次继续执行。看下你自己是不是这个梗。
lxlucky 2016-06-15
  • 打赏
  • 举报
回复
我试了两分钟执行一次可以执行多次,所有它应该是关闭成功,不存在没有关闭导致不能执行下一个的问题
  • 打赏
  • 举报
回复
先调小一点,几分钟执行一次看看
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。 Quartz的优势: 1、Quartz是一个任务调度框架(库),它几乎可以集成到任何应用系统中。 2、Quartz是非常灵活的,它让您能够以最“自然”的方式来编写您的项目的代码,实现您所期望的行为 3、Quartz是非常轻量级的,只需要非常少的配置 —— 它实际上可以被跳出框架来使用,如果你的需求是一些相对基本的简单的需求的话。 4、Quartz具有容错机制,并且可以在重启服务的时候持久化(”记忆”)你的定时任务,你的任务也不会丢失。 5、可以通过Quartz,封装成自己的分布式任务调度,实现强大的功能,成为自己的产品。6、有很多的互联网公司也都在使用Quartz。比如美团 Spring是一个很优秀的框架,它无缝的集成了Quartz,简单方便的让企业级应用更好的使用Quartz进行任务的调度。   课程说明:在我们的日常开发中,各种大型系统的开发少不了任务调度,简单的单机任务调度已经满足不了我们的系统需求,复杂的任务会让程序猿头疼, 所以急需一套专门的框架帮助我们去管理定时任务,并且可以在多台机器去执行我们的任务,还要可以管理我们的分布式定时任务。本课程从Quartz框架讲起,由浅到深,从使用到结构分析,再到源码分析,深入解析Quartz、Spring+Quartz,并且会讲解相关原理, 让大家充分的理解这个框架和框架的设计思想。由于互联网的复杂性,为了满足我们特定的需求,需要对Spring+Quartz进行二次开发,整个二次开发过程都会进行讲解。Spring被用在了越来越多的项目中, Quartz也被公认为是比较好用的定时器设置工具,学完这个课程后,不仅仅可以熟练掌握分布式定时任务,还可以深入理解大型框架的设计思想。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧