gpt4 book ai didi

java - 管理 servlet 容器中的资源关闭

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:03:46 26 4
gpt4 key购买 nike

我将 Tomcat 用作 servlet 容器,并部署了许多 WAR。许多 WAR 共享公共(public)基类,由于不同的类加载器等原因,这些基类在每个上下文中都被复制。

如何在不 Hook 每个 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 现在让我失望了。谢谢!

最佳答案

除了ServletContextListener 没有其他可行的选择。 .

如果您已经在使用 Servlet 3.0,那么您可以使用 @WebListener 对其进行注释。 ,将其与 webapp 一起发送,它将自动加载。但是对于 Servlet 2.5 和更早的版本,您真的需要处理 web.xml

关于java - 管理 servlet 容器中的资源关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3042138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com