【发布时间】:2010-06-15 02:18:31
【问题描述】:
我使用 Tomcat 作为 servlet 容器,并部署了许多 WAR。许多 WAR 共享公共基类,由于不同的类加载器等原因,这些基类在每个上下文中被复制。
如何确保在上下文销毁时清理资源,而无需挂钩每个 web.xml 文件以添加上下文侦听器?
理想情况下,我想要一些类似
的东西class MyResourceHolder implements SomeListenerInterface {
private SomeResource resource;
{
SomeContextThingie.registerDestructionListener(this);
}
public void onDestroy() { resource.close(); }
}
我可以在每个 web.xml 中添加一些内容,但由于可能存在许多 WAR,并且只有实际初始化资源的 WAR 需要清理它,所以在以下情况下注册清理似乎更自然资源被初始化而不是复制大量的 XML 配置然后也许清理。
(在这种特殊情况下,我正在启动一个 SQL 连接池的有序关闭。但我认为这在许多其他情况下也很有用......)
我确信那里有一些非常明显的解决方案,但我的 Google-fu 现在让我失望了。谢谢!
【问题讨论】: