Как создать синхронизированные таймеры в EJB 3? - PullRequest
3 голосов
/ 30 декабря 2011

Я использую таймеры в EJB 3. У меня есть следующие требования для выполнения.

Пример: Предположим, я создал таймер с интервалом истечения в течение 10 минут, начальный таймер запущен, и он выполняет какую-то задачу, котораязанимает больше времени (скажем, 15 минут).Тем временем сервер запустит другой таймер с тем же именем, и время истечения будет достигнуто.Я хочу ограничить запуск сервером другого таймера, если существующий таймер все еще работает.

Также я хочу остановить все таймеры, но когда я использую timer.getInfo() и получаю имя таймера, приложение зависает.

Пожалуйста, помогите решить эту проблему.

1 Ответ

2 голосов
/ 03 января 2012

То, что вы создали, похоже на интервал-таймер / планировщик, который продолжает выполняться после определенного интервала, независимо от предыдущих действий.

Попробуйте создать таймер вручную, создайте его в bean-компоненте, помеченном как инициализация @Startupпри запуске приложения, можете сослаться здесь далее.

//---

     @Timeout
     public void execute(Timer timer){

       /*
          -- Time consuming computation
       */

        createTimer(sec, min, hour)
     }

//---

Поэтому, как только оно будет создано при запуске приложения, оно будет создавать цепочку таймеров.Поэтому, даже если ваша задача занимает больше времени, чем обычно, следующая будет создана только после завершения / истечения предыдущего таймера.

...