繁体   English   中英

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

[英]Should I Shutdown Scheduler at Servlet's destroy() Method?

有一个启动servlet,它在init()方法中初始化Quartz Scheduler,并在destroy()方法中关闭该调度器。 我了解到Servlet本身是一个对象,并且将以未知间隔收集GC。 如果将Quartz Scheduler的关闭操作置于destroy()方法中,则我希望每次GC收集到Servlet时都将重新启动该Scheduler。 如果销毁和启动过程跳过了我希望石英运行线程的确切时间,那么我可能会遇到麻烦。 我在这个假设中正确吗?

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

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

通常,使用ServletContextListener启动和停止Quartz优于使用Servlet。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM