Pau*_*ora 5 java application-shutdown servlet-listeners
我目前正在实现ServletContextListener并使用contextDestroyed()它在关闭之前在我的Web应用程序上运行清理任务.但是,我一直在阅读如何Runtime.addShutdownHook(Thread)用于同一目的.
在取消部署之前,这两种运行清理方法有什么区别吗?在功能,效率和可维护性方面,哪种Web应用程序更受欢迎?
使用 addShutdownHook() 的危险在于,您可能会遇到类加载器泄漏,这在您多次重新部署应用程序时会变得很明显。
因为关闭钩子的类(Web 应用程序中的 Thread 子类或 Runnable 实现)来自 Web 应用程序的类加载器,即使在容器取消部署 Web 应用程序之后,关闭钩子仍将注册到系统。这意味着整个 webapp 的类加载器不能被垃圾收集。
我肯定会推荐 ServletContextListener。
| 归档时间: |
|
| 查看次数: |
4821 次 |
| 最近记录: |