我当前正在实现ServletContextListener
并使用 contextDestroyed()
在Web应用程序关闭之前对其运行清理任务。但是,我一直在阅读如何将 Runtime.addShutdownHook(Thread)
用于相同的目的。
取消部署之前运行清除的这两种方法之间有什么区别吗?就功能,效率和可维护性而言,哪种更适合Web应用程序?
最佳答案
我认为ServletContextListener更适合Web应用程序,因为您需要清理每个 session 的资源。
在关闭JVM的情况下执行关闭钩子(Hook)。那将是您停止容器的时间,这是一次性事件。