zoukankan      html  css  js  c++  java
  • 数据库连接池连接异常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();
     }
  • 相关阅读:
    非阻塞式线程安全列表-ConcurrentLinkedDeque
    计数器
    Linux 查看服务器内存使用情况
    Oracle to_date, to_timestamp
    Hibernate session.flush() 使用
    阿里规约认证(题库附答案)
    多态性
    Java数据类型
    String类特点分析
    数组的定义
  • 原文地址:https://www.cnblogs.com/ouyanxia/p/9952549.html
Copyright © 2011-2022 走看看