1

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 時であれば、プロセスが実行されます。そうでない場合は、何も行われません。

これに対するより良い解決策はありますか?

4

3 に答える 3

3

I think I'd be tempted to use the scheduling software of your server environment to trigger the job, rather than try to handle the scheduling yourself. If your scheduler thread dies for any reason, you'll never run the job again without retarting the app server.

On Unix, you can use cron tabe to trigger the job. An array of more sophisticated tools exist on both Unix and Windows, but even cron should give you the sort of control that you are looking for.

于 2012-08-13T17:08:01.310 に答える
2

Timer.schedule() の代わりに Timer.scheduleAtFixedRate() を使用する必要があります。

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Timer.html#scheduleAtFixedRate%28java.util.TimerTask,%20java.util.Date,%20long%29

于 2012-08-13T17:50:58.237 に答える
1

Quartz-schedulerを試すことができます。ここに良い例があります。

于 2012-08-13T17:08:52.000 に答える