数据库连接池连接异常com.alibaba.druid.pool.GetConnectionTimeoutException

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

推荐阅读