我想知道什麼是在Web應用程序中關閉ExecutorService
的正確位置?在哪裏調用Web應用程序中的ExecutorService.shutdown()
根據文檔ExecutorService
應該關閉,但代碼中的正確位置在Web應用程序中執行該操作?
更新:對不起。讓我們在Java EE下考慮一個帶有MVC的基於Web的應用程序(例如Spring MVC)。它有控制器 - >外牆 - >服務。它沒有EJB。
我想知道什麼是在Web應用程序中關閉ExecutorService
的正確位置?在哪裏調用Web應用程序中的ExecutorService.shutdown()
根據文檔ExecutorService
應該關閉,但代碼中的正確位置在Web應用程序中執行該操作?
更新:對不起。讓我們在Java EE下考慮一個帶有MVC的基於Web的應用程序(例如Spring MVC)。它有控制器 - >外牆 - >服務。它沒有EJB。
「Java EE」涵蓋了大量的技術。如果您正在談論一個servlet,那麼容器將在關閉時調用destroy()
,並且您可以在那裏關閉您的ExecutorService
。如果服務屬於受管理的bean,則可以使用@PreDestroy
來標記要執行此操作的方法。
可以使用得到一個鉤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
}
}
請澄清/集中你的問題,它太廣:Servlet的唯一或EJB呢?從AsyncServlet,@Asynchronous和EJB MDB的角度來看,我很想說沒有必要搜索這樣一個位置(並將它留給容器來管理線程)。 – Beryllium