2012-07-10 121 views
1

我有以下问题:
我需要运行一些从Tomcat中作为Web应用程序的一部分加载的各种类的清理代码。
清理代码范围从关闭executors到数据库清理代码。
我尝试和发现(事后了解到,这是记录为这样)认为:我应该在Web应用程序中放置清理代码?

所有的servlet和过滤器将已被销毁任何 的ServletContextListener通知情况下破坏之前。

因此,这排除了运行任何ServletContextListeners中的清理代码。
我把清理代码放在一个Servletdestroy方法,但意识到,如果客户不要求它的使用将永远被加载,因此在destroy方法清理代码将永远不会运行。
所以现在我卡住了。
从哪里可以找到清理代码的最佳位置,如果我把它放在servlet我不能确保客户端会使用它,如果我把它放在listener它为时已晚?

+2

我不明白为什么你不喜欢在你的webapp中注册一个ServletContextListener。 Servlets和过滤器首先被破坏的问题是什么?当某些servlet仍在运行时,您不希望进行清理。 – 2012-07-10 08:30:23

+0

你的“清理”代码到底需要做什么? – 2012-07-10 08:31:36

+0

@dystroy:因为我的类在关闭之前已经被卸载,所以才有机会在'ServletContextListener'中运行清理代码。 – Jim 2012-07-10 08:35:36

回答

相关问题