• 数据库连接池连接异常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();
     }
  • 相关阅读:
    从Mysql中取出数据并用jieba统计词频
    关于important的用法
    Spring boot主启动类探究
    PHPMyadmin 配置多个网段
    Perl 对json的过滤脚本
    Perl 校验命中的脚本
    web渗透测试工具—Fiddler(转)
    PerlIde in NetBeans7.3 for Debian
    Perl last和next的用法区别
    2020.7.25
  • 原文地址:https://www.cnblogs.com/ouyanxia/p/9952549.html
Copyright © 2020-2023  润新知