在Web应用程序中调用ExecutorService.shutdown()的位置

时间:2013-08-29 13:23:20

标签: java multithreading executorservice application-shutdown servlet-container

我想知道在Web应用程序中关闭ExecutorService的正确位置是什么?

根据文档ExecutorService应该关闭,但是在Web应用程序中代码中的正确位置是什么?

更新:对不起来感到抱歉。让我们在Java EE下考虑一个带有MVC的基于Web的应用程序(例如Spring MVC)。它有Controllers-> Facades->服务。它没有EJB。

2 个答案:

答案 0 :(得分:0)

“Java EE”涵盖了广泛的技术。如果您正在讨论servlet,容器将在关闭时调用destroy(),并且您可以在那里关闭ExecutorService。如果服务由托管bean拥有,则可以使用@PreDestroy标记方法来执行此操作。

答案 1 :(得分:0)

你可以使用ServletContextListener

获得一个钩子
@WebListener
public class MyServletContextListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent e) {
        log.info("Hello");
    }

    public void contextDestroyed(ServletContextEvent e) {
        log.info("Bye");

        // Do cleanups here
    }
}