2
我在我的web应用程序中有Guice的Quartz调度程序。我跟着代码找到here。一切正常,但我无法弄清楚如何关闭调度程序。我的上下文侦听器看起来是这样的:关机石英调度程序
public class MyAppContextListener extends GuiceServletContextListener{
@Override
protected Injector getInjector() {
return Guice.createInjector(new QuartzModule(), new MyAppServletModule());
}
}
和石英模块如下所示:
public class QuartzModule extends AbstractModule {
@Override
protected void configure() {
bind(SchedulerFactory.class).to(StdSchedulerFactory.class).in(Scopes.SINGLETON);
bind(GuiceJobFactory.class).in(Scopes.SINGLETON);
bind(Quartz.class).in(Scopes.SINGLETON);
}
什么是关机调度的最佳途径时,应用程序被停止或取消部署?
我想过使用contextDestroyed,但我怎么才能访问注入器在contextDestroyed()方法? – jjczopek 2010-10-09 21:33:25
如果你看看QuartzModule类,它被定义为SINGLETON,所以VM中只有一个Quartz实例。所以无论你从哪里获得实例,它都将是相同的Quartz实例。 contextDestroyed()中的以下内容应该可以工作:i.getInstance(Quartz.class).shutdown(); – Koekiebox 2010-10-10 15:09:48
我有同样的问题,但这个答案不帮助我。由于ServletContexListener不是由guice创建的,我将如何在那里获得注入器? – 0lukasz0 2011-12-22 17:09:07