Java Cron作业每天午夜运行

Java Cron作业每天午夜运行,java,tomcat,cron,Java,Tomcat,Cron,我使用计时器在Tomcat服务器中运行Cron作业,它在启动时运行,并等待我分配的分钟数。现在,我指定它每24小时运行一次 web xml配置: <env-entry> <description>Minutes to Parse - 1440 minutes = 1 day</description> <env-entry-name>Minutes</env-entry-name> <env-entry-

我使用计时器在Tomcat服务器中运行Cron作业,它在启动时运行,并等待我分配的分钟数。现在,我指定它每24小时运行一次

web xml配置:

 <env-entry>
    <description>Minutes to Parse - 1440 minutes = 1 day</description>
    <env-entry-name>Minutes</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>1440</env-entry-value>
  </env-entry>
但是我需要我的函数每天午夜运行,顺便说一下,它每24小时运行一次,以部署时为参考。例如,如果我们在今天上午10点部署web应用程序,它将在每天上午10点运行

我找到了一个解决方案,但我想知道是否有更好的解决方案。时间间隔为每60分钟一次。。。如果实际时间为上午12点,则将执行此过程。如果不这样做,什么也不会做


有更好的解决方案吗?

我想我会尝试使用服务器环境的调度软件来触发作业,而不是尝试自己处理调度。如果您的计划程序线程因任何原因死亡,则在不重新启动应用程序服务器的情况下,您将无法再次运行作业


在Unix上,可以使用cron tabe触发作业。Unix和Windows上都有一系列更复杂的工具,但即使是cron也应该提供您所需要的那种控制。

我想我会尝试使用服务器环境的调度软件来触发作业,而不是尝试自己处理调度。如果您的计划程序线程因任何原因死亡,则在不重新启动应用程序服务器的情况下,您将无法再次运行作业


在Unix上,可以使用cron tabe触发作业。Unix和Windows上都有一系列更复杂的工具,但即使是cron也应该为您提供所需的控制。

您可以尝试一下。有一些很好的例子,你可以试试。这里有一些很好的例子。

您应该使用Timer.scheduleAtFixedRate()而不是Timer.schedule()


您应该使用Timer.scheduleAtFixedRate()而不是Timer.schedule()

private void startScheduler() {
        try {
            timer.schedule(new TimerTask() {
                public void run() {
                    scheduleParse();
                    //timer.cancel();
                }
                private void scheduleParse() {
                    notificaciones();
                    System.out.println("Lo esta haciendo");
                }
            }, 0, this.minutes * 60 * 1000);
        }
        catch (Exception e) {
        }
    }