Cron Job每天午夜运行

时间:2012-08-13 17:01:38

标签: 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-type>java.lang.String</env-entry-type>
    <env-entry-value>1440</env-entry-value>
  </env-entry>

Cron作业配置:

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) {
        }
    }

但是我需要我的功能每天午夜运行,按照我们的方式运行,它每24小时运行一次,作为部署时间的参考。例如,如果我们今天上午10点部署我们的Web应用程序,它将每天上午10点运行。

我找到了一个解决方案,但我想知道是否有更好的解决方案。时间间隔为每60分钟......如果实际小时为上午12点,则将进行该过程。如果不是,就什么都不做。

对此有更好的解决方案吗?

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

答案 2 :(得分:1)

您可以尝试quartz-scheduler。有很好的例子,here