CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

快被老板开除了:tomcat使用连接池,但是tomcat关闭后数据库的连接没有关闭(急)

楼主Changeczy(水上漂)2006-07-27 14:09:00 在 Java / Web 开发 提问

本人使用strtus结构做了一个网站,基本环境windows   server   2000,   tomcat5.0.28,   jdk1.4.2,使用连接池来做数据库连接.  
  当tomcat使用一段时间后,发现数据库的连接是越来越多,最后数据库的进程数都耗光了,导致所有别的程序都没法连接数据库,这个系统全部无法工作了.  
  今天我试了一下,发现tomcat关闭后,他和数据库的连接居然没有断开导致这个问题.  
  这个核心程序都是包装好了的,也做个一些较大的应用,不过做的都是jsp.没有发现这个问题,tomcat一关闭,所有的和数据库的会话连接都会断开.  
  现在问题非常严重,解决不了就要被公司开除了阿!!! 问题点数:100、回复次数:75Top

1 楼hefei0603(风雨)回复于 2006-07-27 14:19:21 得分 3

你注意看是不是每次连接数据库后都及时关闭了啊!找不到的话就每次数据库连接后完成相关操作马上关闭连接(如果有结果集的就将结果集读出到数组或者arryList中,然后关闭连接)。这样性能上可能要稍微慢一点,但也比占着数据库连接不释放好啊!Top

2 楼ray_1981(雷)回复于 2006-07-27 14:23:20 得分 2

同意楼上!  
  检查每次调用数据库连接后是否都及时关闭了!Top

3 楼Changeczy(水上漂)回复于 2006-07-27 14:41:11 得分 0

谢谢楼上两位兄弟!!!  
  这个是包装好了的,所有代码肯定都是做了关闭和异常处理的了!刚才还仔细检查了一下,群是都关闭了,特别是结果集的地方,都做了finally的处理了的,关闭了!  
  最奇怪的是tomgcat关闭了,居然在数据库端看到还有jdbc   thin   client存在!  
  toncat都关闭了,怎么可能还有连接呢!Top

4 楼infowain(infowain)回复于 2006-07-27 14:47:00 得分 3

你看看那些还存在连接都执行了什么sql操作,多半是那些sql操作有死锁之类的情况发生。  
  找到这些sql,也可以帮你定位你的问题所在。  
  Top

5 楼ray_1981(雷)回复于 2006-07-27 14:47:08 得分 2

jdbc   thin   是通过Java   sockets进行通信。Top

6 楼Changeczy(水上漂)回复于 2006-07-27 15:02:57 得分 0

infowain(infowain)   (   )   信誉:100    
  你看看那些还存在连接都执行了什么sql操作,多半是那些sql操作有死锁之类的情况发生。  
  找到这些sql,也可以帮你定位你的问题所在。  
   
  这个我也看了,那些连接的显示:当前会话没有执行SQL  
   
  ray_1981(雷)   (   )   信誉:100    
  jdbc   thin   是通过Java   sockets进行通信。  
  能不能说的更加详细一点!      
  不管什么通信,应该也是和tomcat的连接的,tomcat关闭连接怎么还存在呢!  
  我还有一个另外一套较大访问量的系统,只要一关闭tomcat,所有的会话jdbc   thin   都会自动断开.Top

7 楼Changeczy(水上漂)回复于 2006-07-27 15:04:11 得分 0

另外我的数据库是:9.2.0.1  
   
  我怀疑那些连接都已经和tomcat没有关系了,成为一些无效的或者异常的连接了!Top

8 楼Changeczy(水上漂)回复于 2006-07-27 16:02:28 得分 0

自己顶!!!Top

9 楼xiangxyz(明天爱谁)回复于 2006-07-27 16:45:10 得分 1

数据库连接写得有问题。  
  建议好好看一遍。Top

10 楼shiningsb(web思想社区『www.webtm.cn』)回复于 2006-07-27 16:53:56 得分 3

给你招应急  
   
  定义个创建连接的时间变量   然后拿现在的时间去减去创建连接的时间变量  
   
  然后判断一下   如果超出60秒   就自动关闭连接。。  
   
  呵呵   可以试下Top

11 楼ray_1981(雷)回复于 2006-07-27 17:12:41 得分 3

同意infowain(infowain)   !  
  这个问题应该和SQL语句执行的操作有关。  
  长时间某句执行SQL,不能关闭。  
  Top

12 楼emin_lee(emin)回复于 2006-07-27 17:36:13 得分 3

在数据源配置中加入下面几句:  
   
  <parameter>      
  <name>removeAbandoned</name>      
  <!--   Abandoned   DB   connections   are   removed   and   recycled   -->      
  <value>true</value>  
  </parameter>    
  <parameter>      
  <name>removeAbandonedTimeout</name>  
  <!--   Use   the   removeAbandonedTimeout   parameter   to   set   the   number   of   seconds   a   DB   connection   has   been   idle   before   it   is   considered   abandoned.     -->      
  <value>60</value>    
  </parameter>  
   
  回收无效连接~Top

13 楼poko(poko)回复于 2006-07-27 21:04:45 得分 3

有没有使用HIBERNATE  
  不管有没有记住在JAVA里数据库连接一个程序只需要1次就够了,不是像ASP那样每页连接1次。  
   
  TOMCAT关闭了数据库连接肯定会关闭,如果不管那他还跟什么东西连?那只能说明数据库有问题  
   
  估计是上面的问题,数据库连接做成静态类。就是STATIC是不是叫静态啊,突然忘记了Top

14 楼Javafan0(狂刀)回复于 2006-07-27 22:22:55 得分 1

顶.Top

15 楼pengcan_2006()回复于 2006-07-27 22:54:32 得分 1

UPTop

16 楼wumir(Menes)回复于 2006-07-28 05:25:44 得分 2

如果“tomcat关闭后,他和数据库的连接居然没有断开”的话,检查数据库的设置吧..Top

17 楼cuizhanjun1981(城市稻草人)回复于 2006-07-28 08:27:23 得分 3

sqlserver自己原因,一般都会保持连接,con.close()后也一样,程序销毁也一样,长时间不连自动会断开,但时间很长。  
  但这不影响   服务,因为程序做的不是太烂的话,及时关闭,就只会保持一个连接,因为只用到一个   connction引用。  
     
  你程序里一定,new   过1个以上的connction   ,并且有1个打开后没关。Top

18 楼zzhzzh204553(真的好想你)回复于 2006-07-28 08:34:55 得分 1

呵呵,路过。  
  接分Top

19 楼guanggan123(红泪 ㊣)回复于 2006-07-28 09:19:04 得分 1

帮你顶一下Top

20 楼yanhuaxie(IT Farmer)回复于 2006-07-28 09:20:18 得分 3

还是把所有的操作数据库的程序好好看看,前断时间,我们公司的另一个部门也出现了类似的情况,我们研发部和网站平台部的系统用的是同一套数据库系统,我们测试开发用一个DB,他们的系统已经实习运行,可是他们的网站程序是一个刚毕业没有多久的人写的,开始一直找不到原因,只要他们的程序一运行,过不了几分钟,我们的程序就连不上数据库,他们的程序也连不上,不他们的程序关了,就一切正常。最后搞得没有办法,让我们去帮他看程序,结果发现是他用完后没有释放数据库连接,晕死了!Top

21 楼NikeUser(NikeUser)回复于 2006-07-28 09:20:22 得分 1

关注!Top

22 楼hefei0603(风雨)回复于 2006-07-28 09:30:46 得分 2

再仔细看下已经封装好连接数据库的程序,有可能其中大部分都关闭连接,但在某些特殊情况下没考虑到要关闭连接。Top

23 楼emin_lee(emin)回复于 2006-07-28 09:38:02 得分 2

如果不出意外  
  应该是你的程序有问题~Top

24 楼Changeczy(水上漂)回复于 2006-07-28 09:43:13 得分 0

我的tomcat里面有这几句话  
  <parameter>      
  <name>removeAbandoned</name>      
  <!--   Abandoned   DB   connections   are   removed   and   recycled   -->      
  <value>true</value>  
  </parameter>    
  <parameter>      
  <name>removeAbandonedTimeout</name>  
  <!--   Use   the   removeAbandonedTimeout   parameter   to   set   the   number   of   seconds   a   DB   connection   has   been   idle   before   it   is   considered   abandoned.     -->      
  <value>60</value>    
  </parameter>Top

25 楼bob_thb(绿果)回复于 2006-07-28 09:43:31 得分 1

关注。Top

26 楼Changeczy(水上漂)回复于 2006-07-28 09:45:44 得分 0

有没有使用HIBERNATE  
  不管有没有记住在JAVA里数据库连接一个程序只需要1次就够了,不是像ASP那样每页连接1次。  
  TOMCAT关闭了数据库连接肯定会关闭,如果不管那他还跟什么东西连?那只能说明数据库有问题  
  估计是上面的问题,数据库连接做成静态类。就是STATIC是不是叫静态啊,突然忘记了  
   
   
   
  我没有使用HIBERNATE,但是我的连接包装成一个静态类了!  
  不过这个我们有个大的项目也是这么做的阿,没有发现这样问题.Top

27 楼Changeczy(水上漂)回复于 2006-07-28 09:51:27 得分 0

还是把所有的操作数据库的程序好好看看,前断时间,我们公司的另一个部门也出现了类似的情况,我们研发部和网站平台部的系统用的是同一套数据库系统,我们测试开发用一个DB,他们的系统已经实习运行,可是他们的网站程序是一个刚毕业没有多久的人写的,开始一直找不到原因,只要他们的程序一运行,过不了几分钟,我们的程序就连不上数据库,他们的程序也连不上,不他们的程序关了,就一切正常。最后搞得没有办法,让我们去帮他看程序,结果发现是他用完后没有释放数据库连接,晕死了!  
   
   
   
  连接肯定是关闭了的(至少我能想到的异常等地方都关闭了),要不早就死机了(网站访问量还是比较大的),昨天我们部门几个人全部连上做了半个小时测试,就是不停的翻页,查询等等,都没有无法关闭的连接(就是tomgcat关闭,还有和数据库的会话),但是今天早上过来发现,又有好几个这样的连接了(就是tomcat关闭,数据库的会话还存在).我把这台机器管道之后,这些会话居然还存在.郁闷!!!!!!!!!!!!!!!Top

28 楼diggywang(Miner Lover!)回复于 2006-07-28 10:21:15 得分 3

我觉得还是要仔细从代码中去找,楼主你敢那么肯定连接全都关闭?只要有一个漏网之鱼,麻烦就可能出现,建议一个方法一个方法一行一行检查下去。像你现在这样的情况,我估计是一个很隐秘的平时不常用的数据库连接操作没有释放。Top

29 楼sunangle(flying_eagle)回复于 2006-07-28 10:33:52 得分 1

Changeczy(水上漂)   兄台  
        <parameter>      
  <name>removeAbandoned</name>      
  <!--   Abandoned   DB   connections   are   removed   and   recycled   -->      
  <value>true</value>  
  </parameter>    
  <parameter>      
  <name>removeAbandonedTimeout</name>  
  <!--   Use   the   removeAbandonedTimeout   parameter   to   set   the   number   of   seconds   a   DB   connection   has   been   idle   before   it   is   considered   abandoned.     -->      
  <value>60</value>    
  </parameter>  
      放到server.xml还是哪里啊?  
     
  Top

30 楼Changeczy(水上漂)回复于 2006-07-28 10:38:48 得分 0

Changeczy(水上漂)   兄台  
        <parameter>      
  <name>removeAbandoned</name>      
  <!--   Abandoned   DB   connections   are   removed   and   recycled   -->      
  <value>true</value>  
  </parameter>    
  <parameter>      
  <name>removeAbandonedTimeout</name>  
  <!--   Use   the   removeAbandonedTimeout   parameter   to   set   the   number   of   seconds   a   DB   connection   has   been   idle   before   it   is   considered   abandoned.     -->      
  <value>60</value>    
  </parameter>  
   
   
  这个是放到server.xml的<Context>片段里面的Top

31 楼xwt799023(★★★★★)回复于 2006-07-28 11:36:26 得分 1

我也顶下,我那个也偶尔出一次死掉现像,一至没有解决Top

32 楼fangjj()回复于 2006-07-28 11:39:54 得分 1

都不想说了。肯定有隐藏的数据库链接没有关闭。楼主怎么那么肯定都   关了呢?Top

33 楼alpsboy(刚)回复于 2006-07-28 12:12:58 得分 2

我没有使用HIBERNATE,但是我的连接包装成一个静态类了!  
   
  静态类有问题,不要用static的Top

34 楼lyqq(曾经是菜,现在还是菜!)回复于 2006-07-28 12:31:33 得分 3

静态类有问题,不要用static的???  
   
  为啥不能用静态类?   偶就是一直用静态类的。没有因为连接出过大问题!  
   
  To   LZ:  
      估计是某个比较特殊的分支没有正常关闭连接。  
   
   
  Top

35 楼schol(敲击思想的键盘,滑动灵感的鼠标~~~好男儿志在四方)回复于 2006-07-28 13:58:14 得分 2

网上应该有比较完善的关于数据库连接池代码,可以参考一下!Top

36 楼Nowish(看我能忍耐多久)回复于 2006-07-28 13:59:48 得分 1

关注中~Top

37 楼zhl0369(T_stone)回复于 2006-07-28 14:52:02 得分 1

帮顶Top

38 楼jt6(横看成岭侧成峰)回复于 2006-07-28 15:01:58 得分 3

建议你在SQL   SERVER数据库作个测试脚本,看看究竟是些什么连接没有关闭。再查OS和DB的问题。  
   
  还有,不知道你董不懂连接池。那个东西是OS和DB管理的,不管你应用程序、Tomcat有什么要求,都是“请求”和“建议”性质,OS或者DB可以不鸟你。  
  Top

39 楼laoxing521(想做程序员的农民)回复于 2006-07-28 15:25:29 得分 2

不至于吧  
   
  tomcat关掉后连接竟然没关掉?  
  我想这个事情数据库本身就会做呀  
   
  长时间没有提交的事务会自动回滚,长时间没有活动的连接会自动断掉  
   
  若这一点数据库都做不到,不太说得过去吧  
   
  ----------  
  不太懂数据库,想当然的说一两句Top

40 楼quanquan626(圈圈)回复于 2006-07-28 15:41:48 得分 1

upTop

41 楼Changeczy(水上漂)回复于 2006-07-28 18:25:33 得分 0

问题还是没有解决阿!!!  
  各位兄弟出出主义1!!Top

42 楼whmily(不回头的土豆)回复于 2006-07-28 18:41:57 得分 1

楼猪使用的什么连接池。用的什么数据库  
   
  让偶们知道个明白先  
  Top

43 楼whmily(不回头的土豆)回复于 2006-07-28 18:45:52 得分 5

楼猪把tomcat/logs下有问题的日志发上来看看。  
  如果使用的是TOMCAT自带的连接池的话,那你可查查DBCP中是如何解决连接不能释放问题。因为TOMCAT自带的连接池是DBCP,而DBCP连接不能自动释放是个老问题了。我个人建议使用proxool连接池。Top

44 楼zhui1(Rick)回复于 2006-07-28 20:40:32 得分 1

upTop

45 楼yejienihao(刚摸到.NET的门槛)回复于 2006-07-28 21:55:55 得分 1

关注Top

46 楼pele7(寞鸣)回复于 2006-07-29 11:13:06 得分 3

我前两天也出现过类似的问题,当时我仔细查了一下JAVADOC,发现是因为数据库执行查询时,statement一连执行查询了好几次,会产生连接池消耗的问题  
  当时解决办法是,每个查询的statement的都不一样,例如:  
  conn   =   ds.getConnection();  
          stmt1   =   conn.createStatement();  
          stmt2   =   conn.createStatement();  
          rs1   =   stmt1.executeQuery(sql1);  
                                  rs2   =   stmt2.executeQuery(sql2);  
   
  不知道能不能解决楼主的问题:)呵呵  
  Top

47 楼leedongxing()回复于 2006-07-29 14:26:15 得分 1

我得学学阿Top

48 楼tx18(www.sqlserver.com.cn)回复于 2006-07-29 15:43:41 得分 3

检查数据库配置参数  
  连接池关闭连接,是应用程序关闭了自己对数据库的连接,而数据库服务器并没有马上关闭对应的响应资源,而继续等待下一次请求,直到在设定的时间后仍没有收到请求才关闭,您就要这个时间参数.MySql中是interactive_timeoutTop

49 楼jt6(横看成岭侧成峰)回复于 2006-07-29 16:23:14 得分 0

看来搂主是习惯了ctrl-C+ctrl-V  
   
  介绍情况都是照抄的,没有自己测试过  
  Top

50 楼dt211(大头)回复于 2006-07-29 22:44:27 得分 0

顶Top

51 楼findhappy7(简单杀手)回复于 2006-07-30 21:21:21 得分 0

当tomcat使用一段时间后,发现数据库的连接是越来越多,最后数据库的进程数都耗光了,导致所有别的程序都没法连接数据库,这个系统全部无法工作了.  
   
  ---  
  数据最大库连接数是可以在数据库里面设置的,如果你使用TOMCAT自带的连接池里面也有最大连接数限制,你可以配置一下,应该最大配70应该够了,如果你的程序没有问题的话。你说的导致所以其他程序无法连接DB,那应该是你的WEB程序占用了DB的所有连接,你在TOMCAT连接池中配置最大连接数,就算你的WEB程序有问题,还不至于会影响其他程序的运作。  
   
  你说的连接越来越多,也很有可能不是你的连接没有finally没有关闭,而是你的程序设计问题,  
  如果你的程序中大量设置到分页,而你的分页的方式是直接从DB把表的所有记录都LOAD回WEB服务器再截取的话,那是比较耗数据库时间的,其实就是延迟了关闭数据库连接的时候,当大量并发访问的时候,数据库的连接就会不断增加,如果长时间这样,,就会有很多废弃连接(真正原因,我也不清楚),所以一定要配置废弃连接回收。另外,如果访问量大,可以考虑使用CACHE,缓冲DB压力,,  
   
   
   
   
  今天我试了一下,发现tomcat关闭后,他和数据库的连接居然没有断开导致这个问题.  
  这个核心程序都是包装好了的,也做个一些较大的应用,不过做的都是jsp.没有发现这个问题,tomcat一关闭,所有的和数据库的会话连接都会断开.  
  ---  
  连接和你是否才有STRUTS应该没什么关系。  
   
   
  最后的意见:  
  在TOMCAT连接池中,记得配置最大连接时间(超时时间)、回收废弃连接(为了测试可以配置回收废弃连接的LOG)、连接池最大连接数、可以考虑使用CACHE  
  Top

52 楼shanshuiboy()回复于 2006-07-31 01:12:48 得分 0

LZ,你怎么知道你的数据库连接没有关闭?你通过什么查看的?TOMCAT会自动关闭的呀Top

53 楼shanshuiboy()回复于 2006-07-31 01:13:01 得分 0

你怎么知道你的数据库连接没有关闭?你通过什么查看的?Top

54 楼best_threewood( Do it !)回复于 2006-07-31 09:03:34 得分 0

学习  
  Top

55 楼Changeczy(水上漂)回复于 2006-07-31 09:19:04 得分 0

谢谢各位兄弟们的支持!!!  
  所有回复我都仔细看过!!!  
  我会一一验证,问题解决之后,我贴出帖子,然后给分!!!欢迎关照!Top

56 楼shiningsb(web思想社区『www.webtm.cn』)回复于 2006-07-31 13:59:22 得分 0

好几天了   还没解决哦?Top

57 楼langke93(冬会初雪)回复于 2006-07-31 15:25:28 得分 0

用proxool连接池试一下,可以参考这个:  
  http://blog.kaila.com.cn/user1/49574/archives/2006/17307.shtmlTop

58 楼zhanlin911(我太菜)回复于 2006-07-31 17:21:17 得分 0

用过滤器控制开关Top

59 楼j2ee_wangdawei()回复于 2006-07-31 21:54:24 得分 0

finally  
  {  
   
  if   (rst   !=   null)  
  {  
  try  
  {  
  rst.close();  
  }  
  catch   (SQLException   ex1)  
  {  
  ex1.printStackTrace();  
  }  
  }  
   
  if   (pstm   !=   null)  
  {  
  try  
  {  
  pstm.close();  
  }  
  catch   (SQLException   ex2)  
  {  
  ex2.printStackTrace();  
  }  
  }  
   
  if   (conn   !=   null)  
  {  
  try  
  {  
  conn.close();  
  }  
  catch   (SQLException   ex3)  
  {  
  ex3.printStackTrace();  
  }  
  }  
  }  
   
  是这样关闭的吗?  
  你用了连接池了   还用什么静态类   连接对象是连接池管理的  
  你用的时候get出来   不用了就关掉  
  你都用了静态   拿出来就不放了   关了也没用啊   静态就代表它一直在内存中。  
  你要是没用连接池的话,你就自己写连接类,用里面加上   同步静态方法,实现单态。就可以了  
  把你的静态方法放掉试一下。  
   
  如果解决了回贴   不给分也行Top

60 楼j2ee_wangdawei()回复于 2006-07-31 22:02:35 得分 0

刚才说的好象不清楚,看一下你所谓的静态类   是不是用静态的变量   指向了连接池的对象。  
   
  是要用静态的方法去   操作局部变量   用局部变量得到连接池的对象,用完了关了  
  绝对没问题的。  
   
  很有可能是静态变量指向了连接对象Top

61 楼flyingever(随遇而安)回复于 2006-08-01 08:54:19 得分 0

markTop

62 楼wanguanghai(心灵鸡汤)回复于 2006-08-01 13:08:27 得分 0

markTop

63 楼junyi2003(超级菜鸟)回复于 2006-08-01 14:48:12 得分 0

数据层写得有问题.......  
  一段时间是多少时间?     使用该程序的频率是多少?    
   
  还有就是你的连接池有问题......如果限定了连接数的话,应该不可能影响到其他程序的.  
  总之一句话,你的程序数据层写得不好,需要改进.Top

64 楼Changeczy(水上漂)回复于 2006-08-01 16:44:38 得分 0

j2ee_wangdawei()   (   )   信誉:100    
   
  你的关闭代码很好,我们也是这么关闭的,非常合理.所以这个地方不会有问题!  
  关于静态类:我先定义一个类,里面有一个静态变量(),这个静态变量的类型就是我包装好了的类,该类里面有几个public方法,其中有查询,更新,连接池创建关闭等方法,平常我只要调用静态类的静态变量的几个public方法就可以了!  
  不知道这样说大家明白没有?!Top

65 楼Changeczy(水上漂)回复于 2006-08-01 16:53:30 得分 0

junyi2003(超级菜鸟)   (   )   信誉:100    
  数据层写得有问题.......  
  一段时间是多少时间?     使用该程序的频率是多少?    
  还有就是你的连接池有问题......如果限定了连接数的话,应该不可能影响到其他程序的.  
  总之一句话,你的程序数据层写得不好,需要改进.  
   
  一天可以增加20多个无法关闭的连接,网站24小时可能都有人访问,频率我可没有提过.  
   
  你说有问题,说详细一点阿!不能泛泛说"肯定是数据层写得有问题......."地球人都知道阿!  
  数据层写得不好,不好再那些地方???再那些地方改进???怎么改进???说详细一点阿!Top

66 楼Changeczy(水上漂)回复于 2006-08-01 16:58:23 得分 0

shanshuiboy()   (   )   信誉:100     2006-7-31   1:12:49     得分:   0      
  LZ,你怎么知道你的数据库连接没有关闭?你通过什么查看的?TOMCAT会自动关闭的呀  
   
  这个再数据库里面查询会话就可以了,也可以用pl/sql   deve的会话看,还可以使用oracle的企业管理器查看会话!也可以用查询SQL(你可以google一下阿)!!!  
  TOMCAT会自动关闭的呀,设置一下每天半夜tomcat会重启一下(呵呵...休息一下,释放资源)  
     
  Top

67 楼liangkandy2002(树大招风)回复于 2006-08-01 17:20:10 得分 0

每天都要重启不是好办法,但也可以解言眉之急.  
  那是重启tomcat之后就没事罗?  
  有毒没?Top

68 楼j2ee_wangdawei()回复于 2006-08-01 17:40:41 得分 0

to   Changeczy(水上漂)   我想问一下   你的连接对象是  
  在你的public方法里面得到的吗?  
  你的想法很好   只有一个实例,但是两个人同时用你的实例你就挂了  
  在你的public方法上加   synchronized   关键字    
  如果还不行的话    
  建议你去换一种连接池,Top

69 楼j2ee_wangdawei()回复于 2006-08-01 18:20:49 得分 0

建议用apache   的   dbcpTop

70 楼liangkandy2002(树大招风)回复于 2006-08-02 08:39:15 得分 0

to   楼上的j2ee_wangdawei()   :  
  在public方法上加   synchronized   关键字  
  但在获取Connection连接的方法不应该加上哦,要记住.  
  如果一个客户getConnection失败,会死锁在里头吧,那下一客户会可以得到连接了吗?Top

71 楼zlsunnan(深蓝)回复于 2006-08-02 09:15:16 得分 0

关注中。。。。。。。。。。Top

72 楼Changeczy(水上漂)回复于 2006-08-02 09:34:07 得分 0

whmily(不回头的土豆)   (   )   信誉:95     2006-7-28   18:45:52     得分:   0  
  楼猪把tomcat/logs下有问题的日志发上来看看。  
  如果使用的是TOMCAT自带的连接池的话,那你可查查DBCP中是如何解决连接不能释放问题。因为TOMCAT自带的连接池是DBCP,而DBCP连接不能自动释放是个老问题了。我个人建议使用proxool连接池。  
   
  这种情况没有异常,没有写日志阿!  
  TOMCAT自带的连接池是DBCP,而DBCP连接不能自动释放是个老问题了?!  
  难道各位没有使用DBCP连接池的,还是各位大侠没有遇到过这个问题?  
  我准备用proxool试试!!!Top

73 楼Changeczy(水上漂)回复于 2006-08-07 15:24:47 得分 0

使用proxool连接池,观察了一个星期,没有发现任何异常,问题解决!  
  至于原来的问题,没有找出什么原因引起的,可能是DBCP连接池的问题!  
  问题解决,不想耗过多精力赖做这个研究了!  
  推荐大家使用proxool连接池.  
  现在接贴!!!!!!!!!!Top

74 楼langke93(冬会初雪)回复于 2006-08-07 20:25:39 得分 0

有没有搞错啊?我帮你解决问题了没给我分Top

75 楼YuLimin(阿敏总司令:简单就是美—钻石闪闪您快结贴!)回复于 2006-08-13 19:31:29 得分 0

用Proxool,简单易用,自动重连,即使第一次可能会有错:(  
   
  示例及配置详见  
  http://painisk.bokee.com/4511289.htmlTop

相关问题

关键词

得分解答快速导航

  • 帖主:Changeczy
  • hefei0603
  • ray_1981
  • infowain
  • ray_1981
  • xiangxyz
  • shiningsb
  • ray_1981
  • emin_lee
  • poko
  • Javafan0
  • pengcan_2006
  • wumir
  • cuizhanjun1981
  • zzhzzh204553
  • guanggan123
  • yanhuaxie
  • NikeUser
  • hefei0603
  • emin_lee
  • bob_thb
  • diggywang
  • sunangle
  • xwt799023
  • fangjj
  • alpsboy
  • lyqq
  • schol
  • Nowish
  • zhl0369
  • jt6
  • laoxing521
  • quanquan626
  • whmily
  • whmily
  • zhui1
  • yejienihao
  • pele7
  • leedongxing
  • tx18

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo