我应该在Servlet的destroy()方法中关闭调度程序吗?

时间:2014-03-21 07:19:59

标签: java servlets quartz-scheduler

有一个启动servlet在init()方法中初始化Quartz Scheduler并在destroy()方法中关闭调度程序。据我所知,Servlet本身就是一个对象,将以未知的间隔收集GC。如果在destroy()方法中放置了Quartz Scheduler的关闭,我希望每次收集servlet时都重新启动调度程序。如果破坏和开始的过程跳过了我期望石英运行一个线程的确切时间,我可能会遇到麻烦。我在这个假设中是对的吗?

注意:我注意到石英库中有一个上下文监听器,当应用程序停止服务时关闭石英。

1 个答案:

答案 0 :(得分:1)

Servlet规范确实允许容器在任何时候卸载Servlet,尽管它们不必这样做(例如Tomcat)。你不太可能遇到问题,但是如果Quartz被Servlet以外的组件使用,那么它实际上属于应用程序而不是Servlet,应该在那个级别进行配置。

通常,使用ServletContextListener而不是使用Servlet来启动和停止Quartz会更好。