TimerService로 작업하는 응용 프로그램이 있으며, 특정 작업을 실행하기 위해 몇 가지 타이머를 만들고 있습니다. 잘 작동합니다. 그러나, 나는 타임 아웃에 약간의 지연이 있음을 눈치 챘다. 나는 10 분마다 실행하도록 스케줄 된 "A"와 매 3 분마다 실행될 또 다른 "B"를 가지고 있습니다. "A"를 실행하는 데 5 분이 걸리면 "B"는 "A"가 끝난 후에 만 실행되어 2 분 지연됩니다. 문제는 준비가되지 않았기 때문에 문제입니다. TimerService를 동시에 실행할 수있는 방법이 있다면 제 질문입니다. 내가 사용하고있는 코드는 다음과 같습니다. 어떤 도움을 주셔서 감사합니다.EJB TimerService 동작
일정 만들기 :
// Every schedule extend from this class.
public abstract class Schedule {
@Resource
private TimerService timerService;
public void start() {
TimerConfig timerConfig = new TimerConfig();
timerConfig.setInfo(name);
timerConfig.setPersistent(false);
timerService
.createCalendarTimer(this.calendarSchedule, timerConfig);
}
}
일정 구현 :
내가 여기에 두 가지 문제를 참조@Named
@Stateless
public class MyScheduleEJB extends Schedule {
@Timeout
public void timeout(Timer timer) {
// do the work
}
}
타이머는 별개의 상태 비 저장 세션 빈 인스턴스를 사용하여 독립적으로 실행되어야합니다. 타임 아웃 메소드에 로깅을 추가하면 타임 아웃 콜백 메소드가 모두 시작되지만 순차적으로 완료되는 것을 볼 수 있습니까? 그렇지 않으면 다른 메소드가 완료 될 때까지 시작되지 않습니다. 동기화 된 메소드 또는 잠금을 사용하고 있습니까? 두 가지 시간 제한 방법이 동일한 DB에서 작동하고 DB 잠금에서 차단됩니까? 단일 Bean 인스턴스 만 허용하도록 Stateless Bean 풀 크기를 구성 했습니까? –
질문을 확인하기 시작했고 Websphere의 특정 구성을 발견했습니다. 감사. –
아, 그 설정을 완전히 잊었습니다. 좋은 발견. –