Java 是否在设置的超时时间后关闭JDBC连接?
有没有办法在设置的超时时间后关闭JDBC连接?正在GenericObject池中创建这些连接。我知道池可以关闭池中的空闲连接,但是对于被认为是活动的连接呢?如果有人不调用close(),我将尝试控制连接泄漏。从我所读到的内容来看,唯一的方法可能是在服务器上设置一个超时时间,但我希望在Java中找到一种方法。谢谢大家! 我同意Peter Lawrey的观点,我会确保始终关闭连接。但是,如果我仍然必须确保连接已关闭(如果有人从池中取出连接并忘记返回),我将按如下方式执行:Java 是否在设置的超时时间后关闭JDBC连接?,java,jdbc,connection,connection-pooling,connection-timeout,Java,Jdbc,Connection,Connection Pooling,Connection Timeout,有没有办法在设置的超时时间后关闭JDBC连接?正在GenericObject池中创建这些连接。我知道池可以关闭池中的空闲连接,但是对于被认为是活动的连接呢?如果有人不调用close(),我将尝试控制连接泄漏。从我所读到的内容来看,唯一的方法可能是在服务器上设置一个超时时间,但我希望在Java中找到一种方法。谢谢大家! 我同意Peter Lawrey的观点,我会确保始终关闭连接。但是,如果我仍然必须确保连接已关闭(如果有人从池中取出连接并忘记返回),我将按如下方式执行: 修饰池返回的java.sq
IllegalStateException
我使用的是旧的ApacheCommons池,但我切换到了新的Apache池,它实际上有一个功能,可以在超时后删除连接
RemoveBandoned-(布尔)标志,用于删除超过RemoveBandonedTiMout的废弃连接。如果设置为true,则连接被视为已放弃,并且如果其使用时间超过RemoveBandonedTimeout,则可以从无法关闭连接的应用程序中恢复db连接。另请参阅日志。默认值为false。我会确保您正确关闭资源。试图解决这个问题可能会隐藏更严重的问题。你能详细说明一下吗:“如果有人不调用close()”。我想他的意思是程序员忘记调用
close()
在连接上。请注意,Glassfish
中有泄漏超时
和泄漏回收
连接池高级设置。如果连接在泄漏超时
秒后未返回到池,则会自动返回到池(如果泄漏回收
已启用)。是的,activeConnectionTimeout已成为连接池中的一个coomon可配置参数。谢谢你关于GlassFish的信息谢谢你的想法。我会调查的。你们是对的,打电话给close是最好的解决方案。