簡體   English   中英

Java Spring 每個線程的數據庫連接數

[英]Java Spring Number of database connections per thread

我想知道我們是否對每個 Java 線程可以打開到數據庫的連接數有限制。 因為當我嘗試使用我相信打開與數據庫的新連接的Propagation.REQUIRES_NEW執行事務時,我收到以下錯誤:

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

根據我的搜索,Hikari 似乎沒有給我的線程一個新的連接。 當我嘗試手動關閉以前的連接時,我不再收到此錯誤。 我如何關閉當前(以前的)連接:

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

那么解決方法是什么? 如果每個線程的連接數有限制,我可以更改此設置嗎?

如果您使用 spring 啟動,請在 application.property 中添加以下屬性以定義池大小

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

我如何關閉當前(以前的)連接:

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

沒明白這一點,如果您使用的是spring-tx為什么不使用它的JdbcTemplate 此外,請確保您在 finally 塊中關閉連接:

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

或使用資源嘗試:

try (Connection c = DataSourceUtils.getConnection(dataSource)) {
   ...
}

關於@Transactional(Propagation.REQUIRES_NEW) - 考慮重構你的代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM