【发布时间】:2015-11-17 13:25:25
【问题描述】:
在应用程序中,我们使用Apache DBCP 连接器来连接Oracle DB。但是每 30 或 40 分钟我们就会收到连接大小泄漏错误。
有没有办法在应用退出之前关闭池中的所有连接?
例如编写一个方法,该方法可以获得关闭事件,并且在该方法中我们可以安全地关闭连接。
【问题讨论】:
标签: java oracle apache-commons-dbcp jdbc-pool
在应用程序中,我们使用Apache DBCP 连接器来连接Oracle DB。但是每 30 或 40 分钟我们就会收到连接大小泄漏错误。
有没有办法在应用退出之前关闭池中的所有连接?
例如编写一个方法,该方法可以获得关闭事件,并且在该方法中我们可以安全地关闭连接。
【问题讨论】:
标签: java oracle apache-commons-dbcp jdbc-pool
在 mysql 中有一种方法可以为休眠连接提供超时(连接未正确关闭)。这在由于应用程序未正确关闭连接而导致连接泄漏的情况下很有帮助。
在 oracle 中也应该有替代方案。
【讨论】:
当您终止您的应用程序时,所有连接都会在一些特别短的时间(例如几秒钟)后释放。但是,如果您的应用程序不处理关闭连接,它可能根本不会退出。在 finally try/catch 语句块中使用它们后,您需要关闭所有打开的连接。
如果您的应用是 gui 应用,则 JFrame 默认不会退出,也不会终止您的应用。
尝试在您的 JFrame 上添加此调用(如果您使用的话),它将导致应用在您单击“X”关闭窗口后永久退出;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
【讨论】: