您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

JSP / Servlet Web应用程序中的后台计时器任务

JSP / Servlet Web应用程序中的后台计时器任务

首先,我不会为此使用JSP。那里不是。

使用Java EE 5时,请使用容器提供的作业计划API。详细信息取决于您使用的容器。例如,JBoss AS 5附带了Quartz。或者,当您在JSP / Servlet之上使用提供作业调度API的框架(例如Spring)时,则应使用它。

如果不存在(例如,您仅使用Tomcat 6),或者想要独立于容器和/或框架,请使用创建ServletContextListener一个ScheduledExecutorService

或者,当您已经在支持EJB 3.1的Java EE 6容器(JBoss AS 6,GlassFish 3,但 不支持 Tomcat 7)上时,最简单的方法就是@Singleton使用@Schedule方法创建EJB 。

@Singleton
public class UpdateSubscriptions {

    @Schedule(hour="*/6", minute="0", second="0", persistent=false)
    public void run() {
        // Do your job here.
    }

}

而已。无需其他配置。

:根据评论,您正在使用Tomcat(6或7?)。要在每6小时运行一次任务的webapp启动期间启动线程,请使用之前链接的答案中提供的示例,并对scheduleAtFixedRate()方法进行以下更改

scheduler.scheduleAtFixedRate(new UpdateSubscriptions(), 0, 6, TimeUnit.HOURS);

该类UpdateSubscriptions必须实现Runnable,并且实际的工作需要以您所使用的run()方法完成@Override,就像链接答案中的示例一样。

Jave 2022/1/1 18:17:03 有482人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶