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 
    } 
} 
相關問題