连接池问题,时间长了连接就不能用了。

laodizhuq 2005-01-25 04:03:13
SQL Server2000
Tomcat 4.1

自己写的连接池,但是时间长了后通过con.isClosed()判断没有Colse的连接,执行SQL语句时就会报连接错误。
使用时没有问题,但是第二天早上再使用,就会出现这种错误,个人觉得是不是一个晚上没有使用这些Connection,连接池中的连接北SQL Server给断掉了。

如果看不董描述可以看下面的帖子,问题相同,但是那里没有看到好的解决方法。

http://search.csdn.net/Expert/topic/2101/2101024.xml?temp=.1498529

希望有高手指点一下。
我现在的做法是每次从ConnectionPool中取Connection时,就执行一个SQL语句测试一把,但是觉得这样是不是太消耗资源了。
...全文
804 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangzhanlili 2005-01-26
  • 打赏
  • 举报
回复
遇到过同样问题 ,是因为你在 getConnection() 的时候没有检查该连接是否有用

就将其引用过来,通常情况下 数据库会关闭很长时间没有查询请求的conn

但你没有检查,虽然 你引用的 conn != null 但可能是一个 无效conn了。
laodizhuq 2005-01-26
  • 打赏
  • 举报
回复
看来只能在getConnection()中添加测试语句“select 1”了。
但是连接池的作用,是为了减轻系统由于频繁的获取和释放连接所豪的资源的。

那在getConnection()中加了测试语句,就是每次从连接池中取连接都要先执行一下sql语句,那么这样岂不是又增加了数据库的负担?

看来是一对矛盾了。郁闷ing
wjr1982et 2005-01-26
  • 打赏
  • 举报
回复
dingdingding
laodizhuq 2005-01-26
  • 打赏
  • 举报
回复
我做的是公司内部的一个应用系统,晚上没有人上班使用了,到第二天就不能使用了。

谢谢各位支持。应该是如“lhj(努力加油) ”说的这种情况。
lhj 2005-01-25
  • 打赏
  • 举报
回复
首先敬仰一下楼主,自己写连接池。以下提一些个人意见:
我在使用Weblogic的Oracle的连接池的时候,记得Oracle的实现上有这样一个设置,即给一个测试语句来测试数据库连接。一般都用 select 1 from dual 。 另外还有一个设置就是多长时间检测一次。一般设置15分钟。
也就是说Oracle的实现的方法,会自动定期用这个语句去检测数据库的连接。一旦检测到连接失败,就关闭连接并重新建立连接。
因此我建议楼主可以考虑这样的机制。毕竟网络连接是完全有可能断开的。

我碰到的实际例子如下:
Web服务器与数据库之间有一个安全防火墙,这个防火墙会定期检查连接,如果某个连接长时间(30分钟)没有数据流过,就会被关闭。这种关闭使得检测连接还是打开的,却不能执行sql语句。但是如果连接一直有数据流动,就不会被关闭。
设置定期检测后,比较好解决了这个问题。

我估计楼主可能也有类似情况。为什么你的连接第二天被关闭了,是不是晚上的数据流动没有了。早上就关闭了。
不一般的凡 2005-01-25
  • 打赏
  • 举报
回复
连接池应该是没有问题,很可能是你自己写的程序的问题,就是相同的Connection,在调用之前被别的线程给close了。也就是被连接池收回了
GJA106 2005-01-25
  • 打赏
  • 举报
回复
struts连接池+mysql;weblogic连接池+oracle,运行一个月都没问题。自己写是不有必要!!可以参考开源项目的代码,如:struts、comm-dbcp、...
menghuanlang 2005-01-25
  • 打赏
  • 举报
回复
这个可能是和数据库相关的吧.
如果上你自己写的连接池,那么,你可以在你的连接池加一个定时器,即每过一段时间,就刷新一下里面的连接!这样也可以提高效率的!
laodizhuq 2005-01-25
  • 打赏
  • 举报
回复
如果con == null 的话con.isClosed()怎么通的过 ,

我测国的con是有的,也没有colse 这是执行SQL语句就会报错。
scienceren 2005-01-25
  • 打赏
  • 举报
回复
你在close之前要判断一下 con != null
laodizhuq 2005-01-25
  • 打赏
  • 举报
回复
自己顶一下

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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