2013-12-16 4 views
0

@Scheduled 주석과 cron 값을 사용하여 메소드를 실행하려고합니다. 메서드는 실행하지만 cron을 존중하지 않습니다. 내 applicationContext.xml의Spring 3.1 @ 임의로 발사하는 스케치

@Component 
public class Test { 
    private static final Logger LOGGER = LoggerFactory.getLogger(Test.class); 

    @Scheduled(cron = "*/10 * * * * *") 
    public void run() { 
     LOGGER.debug("run()"); 
    } 
} 

부 :

<task:executor id="myExecutor" pool-size="5"/> 
<task:scheduler id="myScheduler" pool-size="10"/> 
<task:annotation-driven executor="myExecutor" scheduler="myScheduler"/> 
<bean id="run" class="xxx.Test"></bean> 

내 XML 봄 - 작업 - 3.1.xsd와 스프링 3.1을 사용하고

여기 내 클래스입니다.

내가 시작할 때, 나는 선 10 초마다 있어야한다, 그리고이 얻을 :

12/16 15:51:20,033 [---] [DEBUG] [Test:31] - run() 
12/16 15:51:29,996 [---] [DEBUG] [Test:31] - run() 
12/16 15:54:09,657 [---] [DEBUG] [Test:31] - run() 
12/16 15:54:10,000 [---] [DEBUG] [Test:31] - run() 
12/16 15:54:19,978 [---] [DEBUG] [Test:31] - run() 
12/16 15:54:34,664 [---] [DEBUG] [Test:31] - run() 
12/16 15:55:22,137 [---] [DEBUG] [Test:31] - run() 
12/16 15:55:34,656 [---] [DEBUG] [Test:31] - run() 
12/16 15:55:39,988 [---] [DEBUG] [Test:31] - run() 
12/16 15:55:49,981 [---] [DEBUG] [Test:31] - run() 
12/16 15:59:07,278 [---] [DEBUG] [Test:31] - run() 

각 실행 사이의 지연이 모든 시간을 변경합니다. FixedRate 또는 FixedDelay로 테스트했지만 동일한 결과를 얻습니다.

그래서 클래스도 올바르게 발견되지만 그 방법도 무작위로 발생합니다.

누구나 이런 종류의 행동을 일으킬 수있는 아이디어가 있습니까?

나는 지금 아무런 성공도없이 몇 시간을 찾고 있습니다. java 파일 대신 xml에 스케쥴 된 부분을 두는 것은 cron 값에 대한 특성 파일로 시도하면서 아무 것도 변경하지 않습니다.

@Scheduled(cron = "*/10 * * * * *") 

에 대한 여러분의 cron 표현이하고있는 것처럼 보인다 무엇 그건 등, 30, 20, 10, 즉, "즉 10로 나누어 각 초에이 방법을 실행"말하는

답변

1

12/16 15:54:09,657 [---] [DEBUG] [Test:31] - run() 
12/16 15:54:10,000 [---] [DEBUG] [Test:31] - run() 
12/16 15:54:19,978 [---] [DEBUG] [Test:31] - run() 

(스케줄러의 정밀도 +/-)하지만 몇 번 건너 뛰거나 긴 간격

12/16 15:54:19,978 [---] [DEBUG] [Test:31] - run() 
12/16 15:54:34,664 [---] [DEBUG] [Test:31] - run() 
12/16 15:55:22,137 [---] [DEBUG] [Test:31] - run() 
12/16 15:55:34,656 [---] [DEBUG] [Test:31] - run() 
12/16 15:55:39,988 [---] [DEBUG] [Test:31] - run() 
12/16 15:55:49,981 [---] [DEBUG] [Test:31] - run() 
12/16 15:59:07,278 [---] [DEBUG] [Test:31] - run() 
있다

TaskScheduler의 스레드가 다른 용도로 사용 중이거나 어떤 이유로 든 차단 된 경우에 발생할 수 있습니다. 추가 정보가 필요하면 설치에 대한 자세한 내용을 제공해야합니다.

+0

바쁜 작업 스케줄러에 대한 아이디어를 지적 해 주셔서 감사합니다. 나는 내 컴퓨터를 다른 컴퓨터에서 실행하려고 시도했다. (나의 개인적인 것, 처음의 것이었다.) 완벽하게 작동하고있다. 나는 직장에 설치된 모든 보안 프로그램이 내 프로그램이 올바르게 실행되지 못하게한다고 생각한다. 이 문제에 대한 2 일간의 연구 끝에 해결되었습니다! 감사. – user2358235

+0

@user 여러분, 천만입니다. –

관련 문제