Как служба таймера ejb 3.1 рассчитывает время ожидания? - PullRequest
1 голос
/ 04 ноября 2011

Я хочу знать, как службы таймера Ejb рассчитывают время ожидания?Требует ли это системного времени и в зависимости от этого рассчитывает время ожидания или у него внутри есть механизм для запуска таймера для себя.Если он использует свой собственный механизм, что это такое, и можем ли мы сделать некоторые настройки, чтобы он мог рассчитать время ожидания в зависимости от системного времени?

Я искал эту информацию и не нашел никакой соответствующей информации. В настоящее время я используюTimerService в моем коде и программно созданы таймеры.Но когда я меняю системное время, таймер работает в соответствии с этим.Тайм-аут наступает по истечении заданного времени создания таймера.

Если я не изменяю системное время, то планировщики работают отлично.

Даже если вы можете перенаправить меня на любую такую ​​информацию,be gr8 help.

Любая помощь будет действительно ценной.

Код выглядит следующим образом

ScheduleExpression everyDayAtTenTwenty = new ScheduleExpression();  
TimerConfig timerConfig =  new TimerConfig();  
timerConfig.setPersistent(false);  
timerConfig.setInfo("testTask");  

everyDayAtTenTwenty.start(date).year("2011,2012").month("Jun").dayOfMonth("19").dayOfWeek("*").hour("16-23").minute("30"); timerConfig.setInfo("testTask : ");  

timerKeeperBeanLocal.scheduleTimer(everyDayAtTenTwenty, timerConfig);  

timerKeeperBeanLocal implementation

 @Resource
    private TimerService timerService;

Timer timer = this.timerService.createCalendarTimer(scheduleExpression, timerConfig);  

Теперь я хочу, чтобы планировщик выполнялся 19 июня 2011 и 2012 гг. Теперь текущая дата - 19 июня 2011 г., поэтому сегодня он выполняется иВ тот же день я изменяю системную дату на 29 июня 2011 года вместе с надлежащим временем.В таком случае планировщик не работает.То же самое можно проверить с изменениями в течение нескольких часов.Нужно ли делать что-то еще, чтобы работать по системному времени.

Заранее спасибо.

1 Ответ

1 голос
/ 04 ноября 2011

Служба таймера Ejb использует API времени Java SE, которые, в свою очередь, основаны на системном времени. См

http://download.oracle.com/javase/6/docs/api/java/util/Date.html

И это цитата из спецификации EJB 3.1:

Хотя продолжительность таймера выражается в миллисекундах, это потому что миллисекунда - это единица измерения времени, используемая API-интерфейсы платформы Java SE.

...