热部署后,执行程序线程继续运行

时间:2011-09-27 18:01:05

标签: java jboss6.x

有没有办法知道战争何时被热部署,所以我可以关闭正在运行计划任务的旧执行程序?我正在使用jboss 6,我有一个预定的线程池,它在后台定期更新数据。当我热部署时,该线程池没有关闭并且new启动,所以我有多个预定的线程池。

感谢您的任何意见。

2 个答案:

答案 0 :(得分:4)

是的,但这取决于您启动Executor的位置以及您使用的技术:

    ServletContextListener
  • :在Executor中启动contextInitialized()并在contextDestroyed()中将其关闭。

  • 在servlet中
  • ,在Executor中启动init(),然后使用destroy()

  • 关闭它 EJB / Spring bean中的
  • :在@PostConstruct注释的方法中启动,在@PreDestroy中关闭。

答案 1 :(得分:0)

不确定。这取决于你如何运行这个线程。例如,如果您从sevlet运行它,请使用servlet的destroy()方法来停止它。如果您正在使用其应用程序上下文的Spring使用lifecicle。