Oracle数据库连接数:Java Spring每个线程的数据库连接数

关于Oracle数据库连接数的问题,在spring number中经常遇到, 因为当我尝试使用Propagation.REQUIRES_NEW执行一个事务,我相信打开一个新的连接到数据库,我得到以下错误:

因为当我尝试使用Propagation.REQUIRES_NEW执行一个事务,我相信打开一个新的连接到数据库,我得到以下错误:

java.sql.SQLTransientConnectionException: HikariPool Connection is not available, request timed out after

根据我的搜索,似乎 Hikari 没有给我的线程一个新的连接。当我尝试手动关闭以前的连接时,我不再收到此错误。

c = DataSourceUtils.getConnection(dataSource);
c.close();

那么解决方法是什么?如果每个线程的连接数有限制,我可以更改此设置吗?

0

如果您使用的是 spring boot,请在 application.property 中添加 below 属性以定义池大小

spring.datasource.hikari.minimum-idle= 10 
spring.datasource.hikari.maximum-pool-size= 100
0

我如何关闭当前(previous)连接:

c = DataSourceUtils.getConnection(dataSource); 
c.close(); 

没有得到这一点,如果你使用spring-tx为什么不使用它的JdbcTemplate

Connection c = null;
try {
  c = DataSourceUtils.getConnection(dataSource);
  ...
} finally {
  if (c != null) {
     c.close();
  }
}

或使用 try-with-resources:

try (Connection c = DataSourceUtils.getConnection(dataSource)) {
   ...
}
in regards to@Transactional(Propagation.REQUIRES_NEW)-consider refactoring you code.

UPD。释放通过DataSourceUtils#getConnection获取的 DB 连接的正确模式如下:

try {
  c = DataSourceUtils.getConnection(dataSource);
  ...
} finally {
  if (c != null) {
     DataSourceUtils.releaseConnection(c, dataSource);
  }
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(152)
Python动态规划:并行动态规划(alex stivala)
上一篇
服务器资源:什么是资源联合服务器 (federation server)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(70条)