0

いくつかのスケジュールされたタスクを実行するために使用している次の @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) を再起動してから、アプリケーションをゼロからデプロイすると、完全に機能します。

アプリケーションの再デプロイ時にタイマーを削除するにはどうすればよいですか?

4

1 に答える 1