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();
     }
  • 相关阅读:
    《老男孩》
    java中四种阶乘的计算
    DataOutputStream的乱码问题
    java中飞clone方法
    类反射的简单例子
    PHP: 如何连接oracle数据库进行数据读取
    .NET : 如何读取图片中的元数据信息
    重新审视REST
    PHP 的历史
    Image File Format Specifications {转载}
  • 原文地址:https://www.cnblogs.com/ouyanxia/p/9952549.html
Copyright © 2011-2022 走看看