1

我想知道什么是在Web应用程序中关闭ExecutorService的正确位置?在哪里调用Web应用程序中的ExecutorService.shutdown()

根据文档ExecutorService应该关闭,但代码中的正确位置在Web应用程序中执行该操作?

更新:对不起。让我们在Java EE下考虑一个带有MVC的基于Web的应用程序(例如Spring MVC)。它有控制器 - >外墙 - >服务。它没有EJB。

+0

请澄清/集中你的问题,它太广:Servlet的唯一或EJB呢?从AsyncServlet,@Asynchronous和EJB MDB的角度来看,我很想说没有必要搜索这样一个位置(并将它留给容器来管理线程)。 – Beryllium

回答

0

“Java EE”涵盖了大量的技术。如果您正在谈论一个servlet,那么容器将在关闭时调用destroy(),并且您可以在那里关闭您的ExecutorService。如果服务属于受管理的bean,则可以使用@PreDestroy来标记要执行此操作的方法。

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 
    } 
} 
相关问题