То же приложение, работающее на Glassfish, установленное в Windows и Linux.На винде проблем нет.В Linux раз в несколько дней все таймеры прекращают работу.
Добавление свойства:
reschedule-failed-timer=true
не решило проблему.
Я думал, что это может иметьчто-то связанное с откатами перехода или системными исключениями, поэтому я создал простой тестовый таймер:
@Startup
@Singleton
@LocalBean
public class AliveTimer {
final static Logger log = Logger.getLogger( AliveTimer.class );
@Resource private TimerService ts;
@PostConstruct
private void atStartup() {
TimerConfig config = new TimerConfig();
config.setPersistent( false );
ScheduleExpression schedule = new ScheduleExpression();
schedule.second( "0" );
schedule.minute( "30" );
schedule.hour( "*/8" );
ts.createCalendarTimer( schedule, config );
}
@Timeout
public void execute( Timer timer ) {
log.info( "Timers alive..." );
}
}
, и даже этот останавливает срабатывание через пару дней, и помогает только повторное развертывание приложения или перезапуск контейнера.
Когда возникает ситуация, вызов следующего URL
http://localhost:8080/ejb-timer-service-app/timer
возвращает нормальный вывод
Welcome to Timer Application
There are 0 active persistent timers on this container
There are 258 active non-persistent timers on this container
Ничего существенного также нельзя найти в журналах.
Есть ли у кого-нибудь идеи?в чем может быть причина?