quge_name_harder
quge_name_harder
采纳率0%
2019-03-13 16:27

java.sql.SQLRecoverableException: Closed Connection

各位大佬,求教,我使用DBCP连接池时出现
java.sql.SQLRecoverableException: Closed Connection
报错。经过百度后知道,该错误是连接长时间不用,自动断开了。再次使用该连接时就会出现这个错误。
目前我修改了DBCP的配置文件,如下。请问这样配置之后能不能解决该问题,我使用的是oracle数据库

driverClassName= 
url= 
username= 
password=  

# 连接池启动时创建的初始化连接数量 
initialSize=20 

# 连接池中可同时连接的最大连接数量 
maxActive=20 

# 连接池中最大的空闲连接数量,超过的空闲连接将被释放,设置为负数表示不限制 
maxIdle=8 

# 连接池中最小的空闲连接数量,低于这个数量将创建新的连接 
minIdle=5 

# 最大等待时间,当没有可用连接时,连接池等待连接释放的最大时间 
maxWait=10000 

# 是否在归还到池中进行检验 
testOnReturn=false 

# 校验语句,必须是查询语句,至少查询一列,设置了它onBorrow才会生效 
validationQuery=select 1 from dual 

# 连接是否被空闲连接回收器(如果有)进行检验.如果检测失败, 
# 则连接将被从池中去除.设置为true后如果要生效,validationQuery参数必须设置为非空字符串 
testWhileIdle=true 

# 从池中取出连接时完成校验 ,验证不通过销毁这个connection,默认为true, 
testOnBorrow=false 

# 每30秒运行一次空闲连接回收器 
timeBetweenEvictionRunsMillis=30000 

# 连接在池中保持空闲而不被空闲连接回收器线程 
# (如果有)回收的最小时间值,单位毫秒 
minEvictableIdleTimeMillis=1800000 

#在每次空闲连接回收器线程(如果有)运行时检查的连接数量 
numTestsPerEvictionRun=3 

# 校验查询时长,如果超过,认为校验失败 
validationQueryTimeout=1 

# 设置是否自动提交 
defaultAutoCommit=flase 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • u012976158 强化脑细胞 2年前

    最大等待时间,当没有可用连接时,连接池等待连接释放的最大时间

    maxWait=10000 这句不是明确配置的最大等待时间吗 支持楼上

    点赞 评论 复制链接分享
  • ashin8032 ashin8032 2年前

    池化的链接都会有一个回收时间吧。
    一个问题是什么样的需求会长时间占用链接,而且还不使用?
    如果在不使用的时候,释放掉;需要用的时候再获取,这样应该就不会有问题了。
    而,如果真的有这样的需求的话,或者可以单独的使用长链接进行连接,不要用池化的链接了。
    希望能帮到你。

    点赞 评论 复制链接分享