いくつかのスケジュールされたタスクを実行するために使用している次の @Singleton Bean があります。
@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) を再起動してから、アプリケーションをゼロからデプロイすると、完全に機能します。
アプリケーションの再デプロイ時にタイマーを削除するにはどうすればよいですか?