Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何安排ServletContextListener在指定的日期和时间执行_Java_Servlets_Servletcontextlistener - Fatal编程技术网

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

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

我有一个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);
请帮帮我。。
提前感谢。

您应该使用
EJB
Quartz
的计时器服务的
@Schedule

@Schedule(....)

有关详细信息,请阅读此

ServletContextListener不是每5秒执行一次。servlet容器在应用程序的生命周期中只调用其
contextInitialized
方法一次。@SotiriosDelimanolis,初始化后,它将每隔5秒运行ScheduledExecutorService。@Masud
ExecutorService
正在工作,不是
ServletContextListener
。先生,我用计时器服务代码更新了我的帖子,但我不知道如何在当前使用它context@Adi,date.getTime()将返回currentTimeMillis的长值和延迟date.getTime()秒。它不会在date.getTime()的时间运行。出于您的目的,您需要EJB或Quartz。先生,我已经测试过了,它工作正常。我唯一需要的是设置日期,因为时间已经设置好了。我关心的是如何在日历中设置日期。