数据库连接池连接异常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