gpt4 book ai didi

java - 程序崩溃时如何避免连接泄漏

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

我目前正在编写一个 Java 应用程序,它在很大程度上依赖于 JDBC 和与 Oracle 数据库的连接。每当我连接到数据库时,我都会在 try-catch block 的 finally block 中关闭连接以避免连接泄漏。到目前为止,这工作正常。

但现在我的程序不知何故崩溃了。在 PLSQL Developer 中,我仍然可以观察到一个打开的 JDBC 瘦客户端连接。我现在的问题是:当我不得不通过任务管理器终止我的应用程序时,如何关闭 JDBC 连接?

当然,这种崩溃一开始就不应该发生,但是这导致了连接泄漏,我现在仍然非常不满意,如果连接太多,我现在不得不告诉 DBA 手动终止 JDBC session 仍然开放。

最佳答案

一旦失去应用层和数据库层之间的握手,您将在尝试从应用层终止数据库 session 时遇到一些严重的困难。

有了更高的权限,您可以在查询 V$SESSION View 的地方做一些奇特的事情,并尝试找到挂起的 session ,这样您就可以使用 JDBC< 发送一些终止命令 (请注意,我说可能是因为我不能保证 JDBC 驱动程序中存在这样的命令 - 事实上它可能不存在)。但我认为那将是严重的矫枉过正。

我认为您更好的选择是使用 Oracle 的 session 管理工具从数据库端解决问题。将您正在连接的用户配置文件中的 IDLE_TIME 参数设置为 UNLIMITED 以外的参数,以便 Oracle 自动SNIPES(终止)任何连接闲置一段指定的时间。与您的 DBA 讨论它,他们应该能够为您进行设置……这是一个相当简单的调整(但请记住,您还需要将 RESOURCE_LIMIT 数据库参数设置为 TRUE 用于识别任何 IDLE_TIME 设置。

关于java - 程序崩溃时如何避免连接泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45863144/

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