2011-12-21 12 views
3

2時間ごとに実行するSpring MVCでメソッド呼び出しをスケジュールします。これはSpring 3.0のタイムスケジューラで簡単に行うことができます。しかし、私はその日の特定の時間にのみ実行をオフにしたいです。つまり、このメソッドは、特定の時刻から2時間ごとに呼び出される必要があります。Spring MVC 3特定の時刻に開始するスケジュールされたタスク

たとえば、午前6時から2時間ごとにメソッドを実行します。 TimeSchedulerインターフェイスには、startTime Date引数を使用するようにオーバーロードされたscheduleAtFixedRateメソッドがあります。私はこれをどのように使用するかについてはあまりよく分かりません。

どのようにこれを達成できますか?

答えて

2

あなたはTaskSchedulerインターフェースを見てみることができます:具体的に(これであなたは、cronの式に基づいてスケジュールを指定することができます)@Scheduled注釈をチェックしてください。メソッドscheduleAtFixedRate(Runnable task, Date startTime, long period)ScheduledFutureを返します。あなたは、いくつかの簡単なSpring構成でこれを使用することができます。

<task:scheduler id="scheduler" pool-size="10"/> 

これはTaskSchedulerを実装ThreadPoolTaskSchedulerのインスタンスを作成します。

public class MyClass { 
    @Autowired 
    private TaskScheduler scheduler; 

    public void init() { 
     scheduler.scheduleAtFixedRate(new Runnable() { 
      public void run() { 
       myMethod(); 
      } 
     }, new Date(), 1000 * 60 * 60 * 2); //This will start now and run every two hours 
    } 

    public void myMethod() { 
     // the method you want to invoke 
    } 
} 
+0

まあ両方のアプローチが正しいです、どのアプローチに従っているかによって異なります。私は最終的にcronを選択しました。どうもありがとう。 – Tushar

0

私は、Task Execution and SchedulingのSpringのサポートを見ていきます。

@Scheduled(cron="*/5 * * * * MON-FRI") 
public void doSomething() { 
    // something that should execute on weekdays only 
} 
+0

私が達成できなかったことは、その日の特定の時間に繰り返し実行をトリガーすることでした。 – Tushar

+0

どのくらいの期間繰り返されますか?これはあなたが毎日起こってほしいことですか、それともいつか始まって永遠に走りたいのですか? –

+0

私はこれを1日の特定の時間に開始したい(これは1回だけ)。その後は2時間ごとに永遠に実行されます。 – Tushar