今天是个HAPPY的日子,困扰已久的问题已解决了,下面就切入正题。

1.现象

这个程序是一个用来获取游戏数据并组织成KPI指标数据,以彩信的形式发送给各位领导和同事。

程序主要采用Spring ,hibernate,但是定时任务使用Java Timetask ,话说这个程序是各位前辈们写的,以前业务复杂,各位前辈们写了很多有价值的代码,但随着业务的简化,也逐渐有一部分业务注释掉,到目前为止都看的我头晕。

主要问题是:每天定时任务设置为8点开始发第一波彩信,但程序和死掉一样,不执行,需要重新启动一下Tomcat服务器,才开始发送。

解决方案:

  1. 之前在网上查了很多,在网上看到这篇Blog http://www.iteye.com/problems/96620,因为我这边没有系统时间重新设置的情况,也没有抛出未检测的异常,不过还是受这篇文章的启发,想可能是TimerTask 在某个运行过程中,出现异常,造成线程阻塞了,因为正式环境比较严格,担心一不小心出现发送错误信息给客户,目前还不清楚问题出现在哪里,重点是:

    我把Java TimerTask 替换成Spring task 定时任务,问题解决了


    <!-- 配置定时任务: 秒 分 时 日 月 周 -->

    <task:scheduled-tasks>

    <!-- 确认彩信和KPI彩信任务 -->

    <task:scheduled ref="eventTableTimerTaskJob" method="runTask" cron="0 0/5 6-23 * * ?"/>

    </task:scheduled-tasks>

    今天写一个记录,希望对遇到同样问题的同学们提供一点帮助,也给自己提个醒。