【问题标题】:Cron Job running at midnight every day每天午夜运行的 Cron 作业
【发布时间】:2012-08-09 22:52:52
【问题描述】:

我正在使用计时器在 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 Job 配置:

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 点,将进行该过程。如果不是,则什么也做不了。

有没有更好的解决方案?

【问题讨论】:

    标签: java tomcat cron


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-09-17
          • 2017-10-18
          • 2016-01-13
          • 1970-01-01
          • 2022-01-07
          • 1970-01-01
          • 2011-04-28
          • 2014-12-08
          相关资源
          最近更新 更多