CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

Connection的回收,JavaBean写连接池,请指教,分奉上!

楼主china8jie(八戒)2005-06-02 22:44:42 在 Java / Web 开发 提问

用JavaBean写连接池,测试已成功.  
   
  但是碰到问题就是如果在页面中不显式调用free方法(即回收connection),则连接不会自动关闭,不会被放回池中.  
   
  请问各位开发的时候,是用一个线程来自动回收连接,还是怎么做,请指点迷津. 问题点数:100、回复次数:16Top

1 楼yaray(雅睿,生活在别处)回复于 2005-06-02 23:07:04 得分 100

在获得数据库连接的方法中返回一个存放有该连接的自定义类,在这个自定义类中重载Object类的finalize()方法,在此方法中将数据库连接放回到你的连接池中。(在你的自定义类超过其生命周期以后,这种方式将依赖GC在什么时候销毁你的自定义类,也就是说有可能不会及时归还数据库连接到池中。)  
   
  还有一种方法是运用Java的reflect方式截获Connection的close方法,这样在用户(程序员)调用此连接的close方法时,其实并不是真正的关闭该连接,而是在执行你的重新放到池中的操作。  
   
  最好的方式还是这两种方式都采用:既可以在对象销毁前将连接放回到池中,也可以在用户关闭连接时放回池中,而不是真正的关闭它,呵呵Top

2 楼libin53(红尘摆渡)回复于 2005-06-02 23:16:46 得分 0

yaray(雅睿,生活在别处)   研究的很透彻,还有你用连接池,一般应用服务器可以帮你管理连接池中的连接,像websphere,你可以通过控制台来设置这些参数,来管理连接Top

3 楼yaray(雅睿,生活在别处)回复于 2005-06-02 23:22:25 得分 0

TO:     libin53()    
   
          我只是根据楼主所提的问题作出回答。至于你说的,我也知道----现在一般的容器都已经提供数据库连接池了。  
          所以也在此建议楼主,不一定要自己实现数据库连接池,用容器提供的池就可以了,而自己所需要做的就是配置一下,这样就可以了。Top

4 楼qingzhuang(半片云)回复于 2005-06-03 08:52:48 得分 0

现在几乎容器都有自己的连接池,配置一下就行,要不用开源   的连接池Top

5 楼dlxu(脱离纯粹Coding阶段)回复于 2005-06-03 09:01:04 得分 0

可以参考下开源连接池的源代码。  
   
  用finalize方法作为保险也是不错的选择,在Java.io包里很多情况都是这么做的。不过还是建议自己手工显式调用回收连接代码Top

6 楼china8jie(八戒)回复于 2005-06-03 09:49:42 得分 0

yaray(雅睿,生活在别处)   ,   可否给出第一种实现的代码示例?  
   
  Top

7 楼china8jie(八戒)回复于 2005-06-03 11:09:19 得分 0

用finalize方法又是如何实现呢?  
  具体代码.  
   
  另外,在容器中实现线程要怎么做?Top

8 楼wzy19514(凡事留一线,日后好相见)回复于 2005-06-03 11:36:04 得分 0

upTop

9 楼chuanyuan88(船员-逆水行舟,不进则退!)回复于 2005-06-03 12:03:42 得分 0

finalize()方法是由jvm控制的,在垃圾回收之前先执行对象的finalize()方法,但是因为你永远无法知道什么时候开始垃圾回收。所以我感觉这个是无法预测的。  
  我也在找最好的办法,:)  
  Top

10 楼nimifeng(学海无涯.......苦作舟....理解是美!!!Mars.Neil)回复于 2005-06-03 12:40:17 得分 0

学习..Top

11 楼shendiaodaxia(匆匆)回复于 2005-06-03 12:59:23 得分 0

配置Top

12 楼mail25(■游荡在北四环■)回复于 2005-06-03 14:48:21 得分 0

关注Top

13 楼china8jie(八戒)回复于 2005-06-03 18:43:07 得分 0

用finalize方法即是说等虚拟机自己去回收?  
  还是connection.finalize()?Top

14 楼newste(旭林)回复于 2005-06-03 18:56:41 得分 0

好东西,收了谢谢  
  Top

15 楼china8jie(八戒)回复于 2005-06-03 21:08:36 得分 0

upTop

16 楼china8jie(八戒)回复于 2005-06-04 14:53:10 得分 0

已经做出一个线程实现监控回收!  
  Top

相关问题

  • 20分奉上!!
  • 60分奉上
  • 50分奉上
  • ASM 初学者奉上
  • 高手求救?100奉上!
  • 98问题/50分奉上
  • update() 问题 100分奉上
  • websphere中如何close掉数据库connection,而不会让其回收到websphere的连接池中
  • ######websphere中如何close掉数据库connection,而不会让其回收到websphere的连接池中 #####
  • 回收站问题???????????????

关键词

  • 连接
  • 数据库
  • 代码
  • 回收
  • 方法
  • 容器
  • 调用
  • 自定义类
  • 关闭
  • 实现

得分解答快速导航

  • 帖主:china8jie
  • yaray

相关链接

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

广告也精彩

反馈

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