Java 如何安排ServletContextListener在指定的日期和时间执行
我有一个ServletContextListener,每5秒执行一次。现在根据我的需要,我必须将它设置为每月10日上午10点执行。但我无法设置它 这是我的密码Java 如何安排ServletContextListener在指定的日期和时间执行,java,servlets,servletcontextlistener,Java,Servlets,Servletcontextlistener,我有一个ServletContextListener,每5秒执行一次。现在根据我的需要,我必须将它设置为每月10日上午10点执行。但我无法设置它 这是我的密码 @WebListener() public class MyContext implements ServletContextListener { private ScheduledExecutorService sched; @Override public void contextInitialized(ServletContex
@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);
请帮帮我。。
提前感谢。您应该使用
EJB
或Quartz
的计时器服务的@Schedule
@Schedule(....)
有关详细信息,请阅读此ServletContextListener不是每5秒执行一次。servlet容器在应用程序的生命周期中只调用其
contextInitialized
方法一次。@SotiriosDelimanolis,初始化后,它将每隔5秒运行ScheduledExecutorService。@MasudExecutorService
正在工作,不是ServletContextListener
。先生,我用计时器服务代码更新了我的帖子,但我不知道如何在当前使用它context@Adi,date.getTime()将返回currentTimeMillis的长值和延迟date.getTime()秒。它不会在date.getTime()的时间运行。出于您的目的,您需要EJB或Quartz。先生,我已经测试过了,它工作正常。我唯一需要的是设置日期,因为时间已经设置好了。我关心的是如何在日历中设置日期。