У меня есть следующий bean-компонент @Singleton, который я использую для выполнения некоторых запланированных задач:
@Singleton
@Startup
public class SqsScheduler {
// Logger-------------------------------------------------------------------
private static final Logger LOG = Logger.getLogger(SqsScheduler.class.getName());
// Variables----------------------------------------------------------------
Timer timer;
StoredDynamoQueries storedDynamoQueries = new StoredDynamoQueries();
// Constructors-------------------------------------------------------------
public SqsScheduler() {
timer = new Timer();
timer.scheduleAtFixedRate(new ScheduledTask(), 0, 180 * 1000);
}
// Methods------------------------------------------------------------------
class ScheduledTask extends TimerTask {
@Override
public void run() {
// The scheduled tasks to perform
}
}
}
Все работает нормально, ЗА ИСКЛЮЧЕНИЕМ, когда я отменяю развертывание / повторно развертываю приложение, задачи TimerTasks не удаляются, а затем повторно развернутое приложение начинает выдавать ошибки. Если я отменяю развертывание приложения, перезапускаю сервер (Glassfish 3.1.2.2), а затем развертываю приложение с нуля, оно работает отлично.
Как мне удалить таймеры при повторном развертывании приложения?