java.sql.SQLRecoverableException: 关闭的连接

目录

 

 一.问题

二.问题总结:

三.Spring+IBatis解决方式

五.c3p0解决的办法是: 

注意:

扩展:

DBCP连接池:

参考:


 一.问题

  • 程序如果长时间不进行数据库操作,那么数据源中的 Connection 很可能已经断开。其原因有可能是防火墙,或者连接的数据库设置的超时时间。

二.问题总结:

  • 当数据库连接池中的连接被创建而长时间不使用的情况下,该连接会自动回收并失效,但客户端并不知道,在进行数据库操作时仍然使用的是无效的数据库连接,这样,就导致客户端程序报“ java.sql.SQLException: Io 异常: Connection reset” 或“java.sql.SQLException 关闭的连接”异常。

三.Spring+IBatis解决方式

  • 在配置数据源后面加上
  • 配置后,客户端在使用一个无效的连接时会先对该连接进行测试,如果发现该连接已经无效,则重新从连接池获取有效数据库连接来使用
  • 程序中采用的是Spring+IBatis,数据源配置如下:在 applicationContext.xml中如下设置:

  
  
  
  
  
        
        
        
 

 

  •  经过查找资料和分析,得出该问题主要是由于连接时间过长,失效所致,将以上配置修改如下:

  
  
  
  
  
        
        
        
        
 

 

 

 

五.c3p0解决的办法是: 

  • 在 applicationContext.xml中如下设置:














 













GBK

CP1252

WDS

HelloOracle 





 

注意:

  • 配置项一定要作为 的子元素,而不能做为 的子元素,否则不起作用。

扩展:

DBCP连接池:

  • 在applicationContext.xml中
  
      
          
          
          
          
            
          
            
          
            
          
            
          
          
          
            
          
            
          
          
          
          
          
          
          
          
          
      
     


 

参考:

https://blog.csdn.net/zqd_java/article/details/53738373

http://my.oschina.net/tianzimensheng/blog/65225

http://www.cnblogs.com/younes/archive/2012/06/01/2529483.html

http://www.cnblogs.com/safeking/archive/2007/02/01/637067.html

你可能感兴趣的:(异常,#,Oracle)