有没有办法在设置的超时时间后关闭JDBC连接?这些连接是在GenericObjectPool中创建的。我知道池可以关闭池中的空闲连接,但是那些被认为是活动的连接呢?我试图控制连接泄漏,如果有人不调用close()。从我所读到的,唯一的方法可能是在服务器上设置超时时间,但我希望在Java中找到一种方法。谢谢!
答案 0 :(得分:1)
我同意Peter Lawrey的意见,我会确保始终关闭连接。但是,如果我仍然必须确保连接已关闭(如果有人从池中取出并忘记将其返回),我会按如下方式进行:
IllegalStateException
。答案 1 :(得分:1)
我使用的是旧的Apache公共池,但我切换到了新的Apache Tomcat Pool这实际上有一个在超时期限后删除连接的功能。
removeAbandoned - (boolean)标记,用于删除已放弃的连接(如果它们超过removeAbandonedTimout)。如果设置为true,则连接被视为已放弃并且如果已使用的连接时间超过removeAbandonedTimeout,则可以进行删除。将此设置为true可以从未能关闭连接的应用程序恢复数据库连接。另请参见logAbandoned默认值为false。