tempad
Readygo技术搜索引擎 >>项目管理 >> hi,加菲猫先生,连接池使用中遇到了若干小问题,help me:)也欢迎大家都来看看.

hi,加菲猫先生,连接池使用中遇到了若干小问题,help me:)也欢迎大家都来看看.

Readygo技术搜索引擎 网络搜索 efish 2008-1-17 4:58:20

hi,加菲猫先生,连接池使用中遇到了若干小问题,help me:)也欢迎大家都来看看.

楼主National(清心)2001-12-12 09:21:25 在 Java / Web 开发 提问

      我只保留了pool,作了少量修改,在叶面开始调用getconnection,叶面结束调用release,可是我怎样保证这个叶面一定被执行完毕了呢?对于jsp来说,是一次性解析完之后再显示叶面,还是边解析边显示。---经过测试是后者,那么可能调用不到release函数叶面就关闭了。这样那些连接该怎么释放(当前连接数减1)呢?!这样不是会造成想不到的问题吗?!  
  比如我测试的代码(Pool为修改过的带有初始化信息的原DBConnectionPool)  
  **********************************************  
  <%@   page   contentType="text/html;charset=gb2312"   %>  
  <%@   page   language="java"   import="java.util.*"   %>  
  <%@   page   language="java"   import="java.sql.*"   %>  
  <%@   page   language="java"   import="Pool"   %>  
  <jsp:useBean   id="pool"   scope="application"   class="Pool"/>  
  <%  
  Connection   con   =   pool.getConnection();  
  int   count   =   0;  
  if(con!=null)  
  {  
  Statement   stmt   =   con.createStatement();  
  String   sql   =   "select   count(*)   as   count1   from   contact_task";  
  ResultSet   rs   =   stmt.executeQuery(sql);  
  try{  
  for(int   i   =   0;i<1000;i++)  
  {  
  out.print("1");  
  }  
  if(rs.next())  
  count   =   rs.getInt(1);  
  //stmt.close();  
  }  
  catch(Exception   ex)  
  {  
  out.print(ex);  
  }  
  out.print(count);  
  pool.freeConnection(con);  
  }  
  else  
  out.print("can"t   get   connection!     ");  
  %>  
  **********************************************  
  当我在一个框架页中不停的通过一个连接刷新的时候(按住回车键不放),一会儿察看数据库的连接数已经增加了很多了,即申请了很多连接,而且没有释放。---显然没有调用到freeConnection,但建立了N个stmt,导致数据库增长迅速!即使把//stmt.close();取消注释,效果也是一样的。(更奇怪了,难道stmt自动关闭?)  
  该怎么办才好呢?    
  还有,既然一个connection可以建立任意多的stmt,何必要把connection放到连接池呢,而不是把stmt放到连接池呢?  
  谢谢你!:) 问题点数:25、回复次数:3Top

1 楼National(清心)回复于 2001-12-12 09:32:34 得分 0

更为极端的情况。stmt在jdbc连接sybase数据库时不代表一个连接,而只是会话(和odbc   不一样),那么一个conn不是已经足够?--我需要的话就用它建立新会话,不就了结了?或许是多个连接减少用户等待时间吧.Top

2 楼ycats(加菲猫)回复于 2001-12-13 10:45:25 得分 25

try{  
  //your   code   here;  
  }  
  catch(Throwable   the){  
  throw   the;  
  }  
  finally{  
  releaseConnection();  
  }  
  没执行完就断的话,会有一个socketException抛出的。Top

3 楼National(清心)回复于 2001-12-14 08:56:02 得分 0

thanks!!Top

责任编辑: efish 参与评论 查找更多:
相关文章
怎样取得网页上的链接? 怎样取得网页上的链接?
20分求基础知识 20分求基础知识
誰幫忙解出下面加密的ASP代碼? 誰幫忙解出下面加密的ASP代碼?
精通vb和java的朋友,我求你了!进来帮帮我!可以吗? 精通vb和java的朋友,我求你了!进来帮帮我!可以吗?
asp程序无法浏览 asp程序无法浏览
大家给我介绍一下学习Delphi的好网站? 大家给我介绍一下学习Delphi的好网站?
对一个未显示窗体的程序,怎么判断鼠标点击了左键 对一个未显示窗体的程序,怎么判断鼠标点击了左键
PBWORM,我是Hanson_bati_zhu... PBWORM,我是Hanson_bati_zhu...
如何得到Select结果集中某一行中的数据??? 如何得到Select结果集中某一行中的数据???
请教:怎样在eVC 4.0中使用ActiveMovie? 请教:怎样在eVC 4.0中使用ActiveMovie?
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn

分类导航
Readygo技术搜索引擎