Таймеры весны на JBoss не останавливаются, когда их не используют - PullRequest
1 голос
/ 08 февраля 2010

Я использую Spring Quartz SchedulerFactoryBean для запуска задачи (SimpleTriggerBean) каждые 10 секунд. Это прекрасно работает, за исключением того, что когда я удаляю приложение, таймер продолжает работать. Единственный способ остановить это - перезапустить сервер! Есть ли какая-нибудь конфигурация JBoss или Spring, которая остановит таймер, когда приложение будет развернуто?

Ответы [ 2 ]

2 голосов
/ 30 ноября 2011

У меня была точно такая же проблема с Spring Scheduler, и уничтожение контекста в слушателе помогло. Пример:

public class InitListener implements javax.servlet.ServletContextListener {

    protected static final Logger logger = LoggerFactory.getLogger(InitListener.class);
    protected static final ClassPathXmlApplicationContext springContext = new ClassPathXmlApplicationContext(
        "applicationContext.xml");;

    public void contextInitialized(ServletContextEvent arg0) {
        logger.info("Servlet Context is initialized....");
    }

    public void contextDestroyed(ServletContextEvent arg0) {
        springContext.destroy();
        logger.info("Servlet Context is destroyed....");
    }
}
0 голосов
/ 08 февраля 2010

Нашел проблему - я вручную инициализировал Spring Context, не уничтожая его с помощью сервлета. Добавлен слушатель, теперь все отсортировано.

...