【发布时间】:2011-09-27 18:01:04
【问题描述】:
有什么方法可以知道什么时候正在热部署战争,以便我可以关闭正在运行计划任务的旧执行程序?我正在使用 jboss 6,并且我有一个计划的线程池,它在后台定期更新数据。当我热部署时,该线程池没有关闭并且新启动,所以我有多个计划的线程池。
感谢您的任何意见。
【问题讨论】:
有什么方法可以知道什么时候正在热部署战争,以便我可以关闭正在运行计划任务的旧执行程序?我正在使用 jboss 6,并且我有一个计划的线程池,它在后台定期更新数据。当我热部署时,该线程池没有关闭并且新启动,所以我有多个计划的线程池。
感谢您的任何意见。
【问题讨论】:
是的,但这取决于您从哪里开始 Executor 以及您使用的技术:
在ServletContextListener中:在contextInitialized()中启动Executor并在contextDestroyed()中关闭它。
在servlet中,在init()中启动Executor,用destroy()关闭它
在 EJB/Spring bean 中:在使用 @PostConstruct 注释的方法中启动,在 @PreDestroy 中关闭。
【讨论】:
当然。这取决于你如何运行这个线程。例如,如果您从 sevlet 运行它,请使用 servlet 的 destroy() 方法来停止它。如果您使用 Spring 使用其应用程序上下文的生命周期。
【讨论】: