spring boot访问数据Connection is not available【原创】

今天在运行自己的项目发现一个问题,有些读取数据库能正常访问,有些读取数据库拒绝连接,发现把spring事务取消掉,就能正常读取数据,提示如下错误消息:

HikariPool-1 - Connection is not available, request timed out after 30096ms

经过几天的不懈努力,终于解决了这个问题。

因为我使用的是如下代码来连接数据库:

@PersistenceContext(type = PersistenceContextType.EXTENDED)
private EntityManager entityManager;

导致事务读取数据后并且释放连接,而这些连接依然存在数据库连接池中,导致再次请求数据的时候,因为连接已经失效或者关闭,就会提示上面的错误。

百度、google最后找到解决办法,这里先是说明一下,因为使用HikariPool连接池一直没有解决问题,我换成了DBCP2连接池,问题原因也是一样,解决方式大致一样,只不过是配置项名称不同吧了:

spring.datasource:
  type: org.apache.commons.dbcp2.BasicDataSource
  dbcp2:
      default-auto-commit: true
      initial-size: 30
      max-total: 120
      max-idle: 120
      min-idle: 30
      max-wait-millis: 10
      validation-query: 'SELECT 1'
      validation-query-timeout: 3
      test-on-borrow: true
      test-while-idle: true
      time-between-eviction-runs-millis: 10000
      num-tests-per-eviction-run: 10
      min-evictable-idle-time-millis: 120000
      remove-abandoned-on-borrow: true
      remove-abandoned-timeout: 120
      pool-prepared-statements: true

现在将配置项的详细配置说明贴在如下:

注意:文章到这里还没有完,由于篇幅限制,完整内容请到hongfu951博客上查看

完整内容URL地址:spring boot访问数据Connection is not available【原创】

欢迎访问:www.hongfu951.com博客,查看更多文章

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值