數據庫連接池連接異常com.alibaba.druid.pool.GetConnectionTimeoutException


1、事務沒提交

開啟了事務,但是沒有關閉事務,導致連接池一直被占用

事務管理代碼:

@Autowired
    private PlatformTransactionManager platformTransactionManager;
    
    protected TransactionStatus startTx() {
        TransactionStatus transactionStatus = platformTransactionManager
                .getTransaction(new DefaultTransactionDefinition(
                        TransactionDefinition.PROPAGATION_REQUIRES_NEW));
        return transactionStatus;
    }
    protected void commitTx(TransactionStatus transactionStatus) {
        if(transactionStatus != null){
            platformTransactionManager.commit(transactionStatus);
        }
    }
    protected void rollbackTx(TransactionStatus transactionStatus) {
        if(transactionStatus != null){
            platformTransactionManager.rollback(transactionStatus);
        }
    }

啟動事務沒提交

TransactionStatus transactionStatus = null;
transactionStatus = startTx();

應該提交事務,釋放連接池

commitTx(transactionStatus);

異常回滾事務

rollbackTx(transactionStatus);

 

2、連接沒關閉

打開了數據庫連接,沒有關閉,連接池被占用

Connection conn = null;
ResultSet rs = null;

conn = jdbcTemplate.getDataSource().getConnection();

rs = conn.getMetaData().getTables(null, null, table, null);

應該在完成數據庫相關操作后,關閉連接,釋放連接池

if (rs != null) {
       rs.close();
 }
  if (conn != null) {
       conn.close();
 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM