如何安排ServletContextListener在指定的日期和时间执行

时间:2013-11-12 05:04:48

标签: java servlets servletcontextlistener

我有一个ServletContextListener,它每5秒执行一次。现在根据我的需要,我必须将它设置为每个月的第10个日期在上午10点执行。但是我无法设置它..

这是我的代码..

@WebListener()
public class MyContext implements ServletContextListener {

private ScheduledExecutorService sched;

@Override
public void contextInitialized(ServletContextEvent event) {
    sched = Executors.newSingleThreadScheduledExecutor();
    sched.scheduleAtFixedRate(new MyTask(), 0, 5, TimeUnit.SECONDS);
}

@Override
public void contextDestroyed(ServletContextEvent event) {
    sched.shutdownNow();
}
}

new MyTask()是被调用来执行的类。

这是我在特定时间表上运行的计时器代码..

Timer timer = new Timer();
    Calendar date = Calendar.getInstance();
    date.set(
            Calendar.DAY_OF_WEEK,
            Calendar.TUESDAY);
    date.set(Calendar.HOUR, 11);
    date.set(Calendar.MINUTE, 51);
    date.set(Calendar.SECOND, 0);
    date.set(Calendar.MILLISECOND, 0);


    timer.schedule(
            new ReportGenerator(),
            date.getTime(),
            1000 * 60 * 60 * 24 * 7);

请帮帮我.. 提前谢谢..

1 个答案:

答案 0 :(得分:0)

您应该使用@ScheduleEJB的{​​{1}}定时服务。

Quartz

有关详细信息,请阅读此tutorial