我有以下问题:
我需要从Tomcat中作为Web应用程序的一部分加载的各种类中运行一些清理代码
清理代码的范围从关闭executors
到数据库清理代码
我试过并发现了(并且事后得知这是如此记录的):
所有servlet和过滤器都将在 之前被销毁 ServletContextListeners会收到上下文破坏的通知。
因此,这排除了在任何ServletContextListeners
中运行清理代码
我将清理代码放在destroy
的{{1}}方法中,但意识到如果客户端不需要使用它,它将从不加载,因此清除Servlet
方法中的代码永远不会运行
所以现在我被卡住了。
在Web应用程序中清理代码的最佳位置在哪里,例如如果我把它放在destroy
我无法确保客户端会使用它,如果我把它放在servlet
中,那为时已晚?
答案 0 :(得分:0)
如果您可以选择将servlet配置为在启动时加载,那么就可以解决问题。
有关示例和一些讨论,请参阅What does the servlet <load-on-startup> value signify。