[英]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.