Ejb 2.1 Таймер IOException

У меня странная проблема: я использую объект таймера EJB 2.1 для запуска таймера в определенное время дня и выполнения некоторых хозяйственных операций, таких как удаление файлов. Таймер срабатывает, как и ожидалось, но проблема в том, что он не останавливается. Ниже приведен код, который я использовал для запуска таймера:

Timer myTimer = timerService.createTimer(timeOfDay, myInterval, null);

В моем методе ejbTimeout у меня есть код, который удаляет файлы, теперь, если я получаю IOException в этом методе, EJB откатывается; и метод вызывается снова. Таймер срабатывает 10-15 раз перед остановкой. Я использую WAS 6.1, и у меня был плохой опыт с WAS, который раньше не придерживался спецификаций EJB. Есть ли у кого-нибудь другое объяснение или оправдание? любая помощь будет оценена!


person Sandeep More    schedule 17.12.2010    source источник


Ответы (1)


Вместо того, чтобы писать логику внутри метода TimeOut, используйте потоки для удаления файлов. Таким образом, даже если в потоке возникает исключение, ваша транзакция может не откатиться.

В противном случае вы можете использовать транзакцию, управляемую компонентом, чтобы иметь контроль над транзакциями, можете откатить - зафиксировать соответственно.

person Nayan Wadekar    schedule 18.12.2010