java oracle连接不能释放,有什么方法强制释放?

shihp 2010-06-28 09:34:54
java程序操作oracle数据库,因为数据库的原因有的操作时间过长,程序里做了个超时判断,该操作时间超过一定值就认为是超时,然后程序把这个连接关闭或清空释放,现在程序在关闭时关不掉也不能释放,有什么方法强制关闭或释放没?谢谢!
...全文
859 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
shihp 2010-06-30
  • 打赏
  • 举报
回复
我这个不是用的中间件什么的连接池,是自己写的,是这样做的:先建几个连接入到空闲里,在使用时从空闲取,使用的过程中把使用的放到正在使用的池子,使用完再返回给空闲的。如果空闲里没有了,就去使用的里找,这时看看是不超时了,要是超时就释放掉,我的问题是,空闲没了,全在使用里,且全超时了,但不能释放或关闭
sun0322 2010-06-29
  • 打赏
  • 举报
回复
try catch finally


在finally中把关闭也写上试试!
Landor2004 2010-06-29
  • 打赏
  • 举报
回复
连接池可以配置连接超时时间,weblogic就可以
gdfloyd 2010-06-29
  • 打赏
  • 举报
回复
连接池一般都有最大空闲时间和保留连接时间的配置项,会自动释放资源
shihp 2010-06-29
  • 打赏
  • 举报
回复
情况是这样的,我从池子里取个连接,等我检查池子里可用 的连接时,发现没有了,全部都在使用,这时发现他们都是操作超时的,然后 就要把这些连接释放掉,但释放第一个时就不成功,使用conn.isClosed()方法判断是不是关闭都不行,这里的释放操作是直接操作,没有经过其它方法就是conn.commit()和conn.close()
BearKin 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shihp 的回复:]
谢谢楼上几位的回复,其实我这个是个连接池,只是我在回收时收不到,不能释放这个连接重新,所以我就想关了,再重新建,但现在我发现,这个连接有问题了,使用conn.isClosed()方法判断是不是关闭都不行,程序一执行到这里就不动,也没什么异常出来
[/Quote]

。。所以说你调用的不是"真"的关闭方法嘛。。只是执行了个释放操作而已
shihp 2010-06-29
  • 打赏
  • 举报
回复
谢谢楼上几位的回复,其实我这个是个连接池,只是我在回收时收不到,不能释放这个连接重新,所以我就想关了,再重新建,但现在我发现,这个连接有问题了,使用conn.isClosed()方法判断是不是关闭都不行,程序一执行到这里就不动,也没什么异常出来
BearKin 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 shihp 的回复:]
java程序操作oracle数据库,因为数据库的原因有的操作时间过长,程序里做了个超时判断,该操作时间超过一定值就认为是超时,然后程序把这个连接关闭或清空释放,现在程序在关闭时关不掉也不能释放,有什么方法强制关闭或释放没?谢谢!
[/Quote]

.....如果你获得的是通过代理创建的Connection的话可能的确是关闭不上 因为谁知道你调用的close方法他执行了什么操作呢
水中影子 2010-06-29
  • 打赏
  • 举报
回复
finally{
con.close();
}

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧