今天在运行自己的项目发现一个问题,有些读取数据库能正常访问,有些读取数据库拒绝连接,发现把spring事务取消掉,就能正常读取数据,提示如下错误消息:
HikariPool-1 - Connection is not available, request timed out after 30096ms
经过几天的不懈努力,终于解决了这个问题。
因为我使用的是如下代码来连接数据库:
@PersistenceContext(type = )
private EntityManager entityManager;
导致事务读取数据后并且释放连接,而这些连接依然存在数据库连接池中,导致再次请求数据的时候,因为连接已经失效或者关闭,就会提示上面的错误。
百度、google最后找到解决办法,这里先是说明一下,因为使用HikariPool连接池一直没有解决问题,我换成了DBCP2连接池,问题原因也是一样,解决方式大致一样,只不过是配置项名称不同吧了:
:
type: .
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【原创】
欢迎访问:博客,查看更多文章