在Web系统中,怎么实现一个定时任务。

时间:2022-10-20 07:53:07
在Web系统中,怎么实现一个定时任务。

我需要做一个web系统,其中有一个定时任务始终不的断收集数据并写入数据库。
web提供界面根据条件筛选查看这些数据。
以前在C#上做都是将这个定时任务写成Windows Service.
最近在安装Sonatype nexus和Hudson系统时,发现他们也是有一个后台任务不断
的在转。但是并没有windows service.

可能需要一个timer,可是timer在什么地方启动呢?

请问这样的功能是怎么做的呢?

16 个解决方案

#1


简单的话,而且不是集群化的部署,可以直接用TimerTask来搞。启动的时机就定义个Listener,在那里启动就可以了。如果需要集群,还是quartz省事一些。

#2


该回复于2014-01-28 10:15:25被管理员删除

#3


若是spring直接用quterz名字忘了
若不是第一先写一个监听器项目启动的时候执行你的类(继承timetask)

#4


我觉得如果用过的是spring框架的话,就用spring的定时器quartz,配置调用的方法完事,配置文件里也可以配置定时器发生的时间规律

#5


引用 4 楼 lgc8023 的回复:
我觉得如果用过的是spring框架的话,就用spring的定时器quartz,配置调用的方法完事,配置文件里也可以配置定时器发生的时间规律


如果不用spring的功能,那就得timer实现。
我最想问的是在哪儿启动timer。Listener么?

有没有可能发生异常导致timer停止了呢?
怎么判断timer是否停止了呢?在哪里判断?Listener么?

#6


不管用timertask,还是quartz都好用,而且这个不会停止的,就算有异常也不会停。
用spring的话,它的数据库事务管理别用,如果发生对同一个表的读写并发,很容易导致数据源死锁。

#7


引用 6 楼 yys79 的回复:
不管用timertask,还是quartz都好用,而且这个不会停止的,就算有异常也不会停。
用spring的话,它的数据库事务管理别用,如果发生对同一个表的读写并发,很容易导致数据源死锁。


程序有异常也不会停止么?这么厉害?
quartz好像不用编写启动的代码,配置就可以了。
timertask得需要启动代码,写在哪里呢?Listener么?那个Listener最合适呢?

#8


Listener最合适,早期使用load-on-startup的servlet,不过现在基本上不怎么用了。

#9


如果你是servlet 3.0的,推荐使用注解吧@ServletListener,低版本的还是用web.xml配置

#10


BAIDU JAVA定时插件,有个叫JQUERY的好像

#11


quartz

#12


http://www.oschina.net/question/8676_9032 
Spring+Quartz实现定时任务的配置方法

#13


该回复于2014-02-07 13:21:39被版主删除

#14


该回复于2014-02-07 13:21:15被版主删除

#15


你哪里需要它,在哪里启动

#16


1L说的对。

#1


简单的话,而且不是集群化的部署,可以直接用TimerTask来搞。启动的时机就定义个Listener,在那里启动就可以了。如果需要集群,还是quartz省事一些。

#2


该回复于2014-01-28 10:15:25被管理员删除

#3


若是spring直接用quterz名字忘了
若不是第一先写一个监听器项目启动的时候执行你的类(继承timetask)

#4


我觉得如果用过的是spring框架的话,就用spring的定时器quartz,配置调用的方法完事,配置文件里也可以配置定时器发生的时间规律

#5


引用 4 楼 lgc8023 的回复:
我觉得如果用过的是spring框架的话,就用spring的定时器quartz,配置调用的方法完事,配置文件里也可以配置定时器发生的时间规律


如果不用spring的功能,那就得timer实现。
我最想问的是在哪儿启动timer。Listener么?

有没有可能发生异常导致timer停止了呢?
怎么判断timer是否停止了呢?在哪里判断?Listener么?

#6


不管用timertask,还是quartz都好用,而且这个不会停止的,就算有异常也不会停。
用spring的话,它的数据库事务管理别用,如果发生对同一个表的读写并发,很容易导致数据源死锁。

#7


引用 6 楼 yys79 的回复:
不管用timertask,还是quartz都好用,而且这个不会停止的,就算有异常也不会停。
用spring的话,它的数据库事务管理别用,如果发生对同一个表的读写并发,很容易导致数据源死锁。


程序有异常也不会停止么?这么厉害?
quartz好像不用编写启动的代码,配置就可以了。
timertask得需要启动代码,写在哪里呢?Listener么?那个Listener最合适呢?

#8


Listener最合适,早期使用load-on-startup的servlet,不过现在基本上不怎么用了。

#9


如果你是servlet 3.0的,推荐使用注解吧@ServletListener,低版本的还是用web.xml配置

#10


BAIDU JAVA定时插件,有个叫JQUERY的好像

#11


quartz

#12


http://www.oschina.net/question/8676_9032 
Spring+Quartz实现定时任务的配置方法

#13


该回复于2014-02-07 13:21:39被版主删除

#14


该回复于2014-02-07 13:21:15被版主删除

#15


你哪里需要它,在哪里启动

#16


1L说的对。