我有以下@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),然后从头开始部署应用程序,它可以完美运行。
重新部署应用程序时,我将如何删除计时器?