2011-12-21 3 views
3

2 시간마다 실행되도록 Spring MVC에서 메소드 호출을 예약하려고한다. 이것은 Spring 3.0 Time Scheduler를 통해 쉽게 할 수 있습니다. 그러나 나는 그날의 특정 시간에만 사형 집행을 걷고 싶습니다. 즉, 메서드는 특정 시간에 시작하여 2 시간마다 호출해야합니다.Spring MVC 3 특정 시간에 시작되는 예약 된 작업

예를 들어, 오전 6시에 2 시간마다 실행하는 방법을 원합니다. TimeScheduler 인터페이스에는 startTime Date 인수를 사용하도록 오버로드 된 scheduleAtFixedRate 메소드가 있습니다. 나는 이것을 어떻게 사용하는지 잘 모른다.

어떻게 구현할 수 있습니까?

답변

2

당신은 TaskScheduler 인터페이스를 살펴 수 : 특히 (있는 당신은 크론 표현을 기반으로 일정을 지정할 수 있음) @Scheduled 주석을 확인하십시오. scheduleAtFixedRate(Runnable task, Date startTime, long period) 메서드는 ScheduledFuture을 반환합니다. 당신은 몇 가지 간단한 봄 구성이를 사용할 수 있습니다

<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

나는 이것을 하루 중 특정 시간에 시작하기를 원한다. (이것은 한 번 끝난다.) 그리고 나서 2 시간마다 영원히 실행된다. – Tushar