当前位置:  技术问答>java相关

再讨论:连接池的问题

    来源: 互联网  发布时间:2015-10-23

    本文导语:  Connection conn; conn = (Connection)freeConn.firstElement(); 如何检查conn这个连接的有效性? if (conn==null){response.sendRedirect("/error.htm");return;} Statement stmt = conn.createStatement(); 以上的代码在一般情况下是正常的, 可是如果ORAC...

Connection conn;
conn = (Connection)freeConn.firstElement();


如何检查conn这个连接的有效性?

if (conn==null){response.sendRedirect("/error.htm");return;}
Statement stmt = conn.createStatement();



以上的代码在一般情况下是正常的,
可是如果ORACLE中用alter system kill session'108,3723';      
杀了连接后,它会报错。

那么怎么样在Statement stmt = conn.createStatement();
之前检查conn的状态呢?

conn.isClosed()
好象不起作用哟

|
就用try包括,等异常时查看错误信息不就可以了吗

|
如果正常连接数据库的话,conn.isClosed()不会不起作用啊

|
杀了连接的进程,connection应该是非法关闭,当然后面的操作会出错
你如果try到了这个异常,然后在catch里面response.sendRedirect("/error.htm");return;而不通过conn==null来判断,这样不也达到了同一效果了吗

|
首先你想想一个连接是从连接池中获得的,你要判断他的状态当然是去该连接池的管理处查询。
其次连接在数据库端被kill,则这个连接对象就已经失效了,你又怎么能通过自身的属性方法去判断呢,这好比让一个死人去对别人说他是死的还是活的。

|
kill掉连接,估计连接池破坏,conn.isClosed()就会抛出异常,不生效的原因之一

|
什么叫不递归?这个哪用到递归了,按道理在catch里重建了连接,然后打出一条日志,后面的程序应该继续执行,你说返回错误,是在哪返回,是在后面用conn的时候吗?不明白你什么意思

|
我还是觉得你最好通过连接池的管理器去判断一个连接是否有效,

至于上面的代码对不对,这个和你那个连接池的管理机制有关系的

但我个人认为你没有手动地销毁这个连接对象,在你的池管理那还是没有释放这部分内存空间的。

|
对了,还有你在try里没有执行SQL的操作,但你的catch捕获的是SQLException,这肯定抓不到的。改成Exception应该可以,再试试

|
哦,这样,程序看起来好象没问题,API中说if a database access error occurs,就会抛出SQLException,我想会不会是conn = (Connection)freeConn.firstElement();这个有问题,freeConn.......思考中

|
真搞不懂,把取个连接 的方法弄得这么复杂,你写什么程序呢

|
有一个办法就取出连接后试着从dual表中执行一条SQL(select * from dual)
然后捕捉异常来判断,这样的话我用连接池了来提高速度的算盘也就落空了

|
实际运用中好似conn.isClosed()真的不起作用的,只要你没有用conn.close(),conn.isClosed()总会为false.
一个方法是另写一个
public boolean isClosed(){
  try{
    Statement stmt=conn.createStatement();
    stmt.close();
    return false;
  }catch(Exception e){
    return true;
  }
}
请各位指教.

|
good

    
 
 

您可能感兴趣的文章:

  • 讨论:jdbc连接oracle数据库
  • 讨论ubuntu10.10网络连接问题
  • 讨论:PIII550+128SD+20GB硬盘,使用DDNS,用铁通,能撑多少个连接?用什么系统最好?
  • 熟悉连接池的朋友请进!(在线讨论)
  • 求教:多连接监控设计问题,谢谢!!欢迎讨论
  • 讨论: linux系统的软连接
  • 关于在LINUX下开发有上千个Client连接的Server的技术. 请大家讨论和指点
  • 讨论下数据库连接池的东东如何?(JSP+JavaBean+Oracle)有赏!
  • 请进来讨论一下,关于Linux最大连接数的问题。
  • 参数传递的问题!(大家讨论讨论)
  • 哪位高手有兴趣跟我讨论讨论java中调用dll文件??小弟有些问题还是不很清楚??
  • 和Java版高手在线讨论代理服务器的问题,讨论者都有分。
  • Java 访问控制的问题(public,private,protected,(default))!讨论讨论!
  • 这两天本版人气不高,我来发个问题,有关互斥同步的。大家讨论讨论
  • 请问这里可以讨论MINIX的问题吗?
  • 讨论linux的发展前途与有无用处问题。。。。。。。。。。。
  • LINUX下JAVA要代替C..?常跟朋友讨论的一个问题
  • 讨论LUXIN安装问题
  • 大家来讨论一个最实际的问题:)
  • 请问一下,关于arm下的嵌入式linux驱动相关问题请教是应该发在哪个讨论区?
  • 高手请进!讨论一个问题。
  • 关纯DOS下的256色、32K色、64K色问题讨论
  • 有挑战性的问题,大家一起讨论
  • 大家讨论一下指针数组的问题!
  • 老问题新讨论
  • 哇考,为什么在一个帖子里不能回复30次以上啊?这样子怎么和人家讨论问题啊?
  • 我看到大家都在讨论分数的问题,我如何看到自己的分数呢?
  • 请使用QT编程的朋友到以下网址讨论QT中遇到的问题!!!!!!!
  • Java与IE的问题!大家来讨论!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Java 可以做拨号程序吗?我只是和大家讨论讨论 不必太认真
  • 欢迎高手来讨论:关于文件格式的大讨论
  • 用java开发一个基于Proxy(代理)的网络计费系统。有兴趣的来讨论讨论
  • 【讨论贴】gcc开发的时候有大家都有什么好的调试方法,来讨论下
  • 讨论讨论,当错误发生时,并用if语句测试出时,应该返回怎样的值
  • 一个面试,是“北京华胜六所”外包给风河(VxWorks)北京研发处,做linux内核开发,大家过来讨论讨论
  • 新建了个QQ群(软件与创业),希望有兴趣的朋友进来讨论讨论软件项目、产品、创业、管理、投资等(代码之外的)观点和想法
  • 用java做c/s结构可行吗???大家来讨论讨论,应该都会有收获。
  • 有没有人讨论value object模式
  • http://www.itpub.net 论坛更换数据库,速度更快,欢迎大家前去讨论!
  • 讨论“内存泄漏”
  • 很专业的问题请教J2EE高手!这是一个讨论区,有请各位对J2EE感兴趣的朋友参加讨论!
  • 大家一起讨论讨论,suse和ubuntu的区别,顺便散散分
  • 对大家很有意义的一个问题,建议大虾、菜鸟们都来讨论讨论#¥#·#¥·#%#¥%#¥%
  • 大家来讨论一下java 的发展前景
  • 谁会JAVA让我们共同学习和讨论JAVA
  • 100分大讨论:Servlet + var 模式 !
  • 欢迎大家一起来讨论:集群在J2EE中的实现。
  • 为什么在这里讨论编程的很少?
  • 讨论一下UNIX中的硬链接与符号链接


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3