2014-01-26 3 views
0

Вот мой сервис таймера внутри боба @Stateless.javax.ejb.Timer перезапускается после короткого периода

@Resource 
private TimerService timerService; 

Я создаю таймер

int timeout = 10; 
Timer timer = timerService.createTimer(timeout * 1000, timerId); 

Мой таймаут

@Timeout 
public void handleTimeout(Timer timer){ 

    // This method process a task that requires 
    // 60-80 minutes on an average 

} 

Но странно мой handleTimeout() перезапускается через 5-6 минут. Через 5-6 минут он получает Exception и прекращает обработку.

Я просто хочу запустить метод в течение часа через @Timeout. Что мне здесь не хватает?

Очевидно, я могу использовать планировщик заданий Quartz или Async, чтобы преодолеть это. Но хочу знать, что здесь происходит с моим кодом.

ответ

0

Ну, еще раз я решил свою проблему. В моем Jboss7.1standalone.xml файл имеет следующую вещь, из-за которой мой процесс получает таймаут через 5 минут.

<coordinator-environment default-timeout="300"/> 

Я увеличил это значение, чтобы расширить общий процесс, и он сработал. Например, 3000 секунд в течение 50 минут.

Для моего Jboss EAP 6.2 Мне не нужно было изменять эту конфигурацию. Просто добавив эту аннотацию к методу, который работал для меня. Примечание:это не работает на Jboss7.1

// import javax.ejb.TransactionAttribute; 
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) 

Надежда когда-нибудь мой ответ поможет кому-то :-)

Смежные вопросы