JSP/Servlet web应用程序中的java后台计时器任务 1 月 Questions & Answers 24831 我想从订阅中检索,并在每6小时后从订阅中将提要存储到DB。我想在后台有一个计时器线程来完成这个任务 最好的方法是什么?普通的计时器线程还是石英API
# 1 楼答案 首先,我不会为此使用JSP。这不是给你的 当您使用JavaEE5时,请使用容器提供的作业调度API。更多细节取决于您使用的容器。例如,JBoss AS 5随附了Quartz out the box。或者,当您在JSP/Servlet之上使用一个框架,该框架提供作业调度API,比如Spring,那么您应该使用它 如果没有(例如,您只使用Tomcat 6),或者您希望独立于容器和/或框架,请使用^{}创建一个^{}。更多详细信息请参见this answer 或者,当您已经在一个支持EJB3.1的JavaEE6容器上(JBoss AS 6,GlassFish 3,但因此而不是Tomcat 7)时,最简单的方法是使用^{}方法创建^{}EJB @Singleton public class UpdateSubscriptions { @Schedule(hour="*/6", minute="0", second="0", persistent=false) public void run() { // Do your job here. } } 就这样。无需进一步配置 更新:根据评论,您正在使用Tomcat(6或7?)。要在webapp启动期间启动每6小时运行一次任务的线程,请使用beforelinked answer中提供的示例,并在^{}方法中进行以下更改 scheduler.scheduleAtFixedRate(new UpdateSubscriptions(), 0, 6, TimeUnit.HOURS); 类UpdateSubscriptions必须实现^{},实际工作需要在^{}方法中完成,就像链接答案中的示例一样
# 1 楼答案
首先,我不会为此使用JSP。这不是给你的
当您使用JavaEE5时,请使用容器提供的作业调度API。更多细节取决于您使用的容器。例如,JBoss AS 5随附了Quartz out the box。或者,当您在JSP/Servlet之上使用一个框架,该框架提供作业调度API,比如Spring,那么您应该使用它
如果没有(例如,您只使用Tomcat 6),或者您希望独立于容器和/或框架,请使用^{} 创建一个^{} 。更多详细信息请参见this answer
或者,当您已经在一个支持EJB3.1的JavaEE6容器上(JBoss AS 6,GlassFish 3,但因此而不是Tomcat 7)时,最简单的方法是使用^{} 方法创建^{} EJB
就这样。无需进一步配置
更新:根据评论,您正在使用Tomcat(6或7?)。要在webapp启动期间启动每6小时运行一次任务的线程,请使用beforelinked answer中提供的示例,并在^{} 方法中进行以下更改
类} ,实际工作需要在^{} 方法中完成,就像链接答案中的示例一样
UpdateSubscriptions
必须实现^{