日期:2014-05-18  浏览次数:20889 次

在servlet中使用定时器的问题
我在Servlet的init()方法中启动了定时器Timer,定时执行任务。
在web.xml中通过load-on-startup让servlet能够自动初始化实例,
并且在该Servlet中重写destory()方法,代码内容是销毁servlet时cancel掉定时器。

但是不太清楚这个Servlet实例什么时候被销毁,我的定时器可能需要长时间来运行(间隔以天为单位),我怕因为servlet实例不活动,Servlet容器自动把它销毁而导致定时器被无端关闭,有没有这种隐患呢?

------解决方案--------------------
当你的servlet容器关闭的时候销毁,因此完全不用担心
------解决方案--------------------
这个只有天知道它什么时候会被容器销毁,也许web.xml会有设置吧。如果实在不行就用引用来指向它。一般有引用指向一个实例它应该就不会被销毁了。

------解决方案--------------------
同意楼上的。
------解决方案--------------------
其实你可以什么都不用管
spring来帮你完成定时的调度

http://www.busmate.com/collection/958/12487.html
------解决方案--------------------
我碰到的了这样的问题,在servlet里加入Timer来定时执行任务,
应用服务器是weblogic
delay=0;
period=900000 //周期为15分钟
//period=1800000 //周期为30分钟
myTimer.schedule(TimerTask, delay,period);
当周期为15分钟时任务正常执行
当周期为30分钟时任务只在启动是执行一次,不能进行周期执行。
大家分析下是什么原因?