有一个启动servlet在init()方法中初始化Quartz Scheduler并在destroy()方法中关闭调度程序。据我所知,Servlet本身就是一个对象,将以未知的间隔收集GC。如果在destroy()方法中放置了Quartz Scheduler的关闭,我希望每次收集servlet时都重新启动调度程序。如果破坏和开始的过程跳过了我期望石英运行一个线程的确切时间,我可能会遇到麻烦。我在这个假设中是对的吗?
注意:我注意到石英库中有一个上下文监听器,当应用程序停止服务时关闭石英。
答案 0 :(得分:1)
Servlet规范确实允许容器在任何时候卸载Servlet,尽管它们不必这样做(例如Tomcat)。你不太可能遇到问题,但是如果Quartz被Servlet以外的组件使用,那么它实际上属于应用程序而不是Servlet,应该在那个级别进行配置。
通常,使用ServletContextListener而不是使用Servlet来启动和停止Quartz会更好。