首页 > 解决方案 > 创建我自己的 SQL 连接池,想知道这是否是不好的做法/有故障?

问题描述

因此,我使用填充了 SQLConnection 对象列表的阻塞队列创建了自己的 MySQL 连接池:

public class SQLConnection {

private Connection connection;
private int uses;
private long alive;

protected SQLConnection() {
    try {
        this.connection = DriverManager.getConnection(SQLPool.URL, SQLPool.USER, SQLPool.PASS);
    } catch (SQLException e) {
        e.printStackTrace();
    }

    this.uses = 0;
    this.alive = System.currentTimeMillis();
}

protected void addUse() {
    uses++;
}

protected boolean isRenew() {
    try {
        if (connection.isClosed() || uses > 100 || getAlive() > 900000) {
            return true;
        }
    } catch (Exception e) {
        return true;
    }

    return false;
}

protected boolean isAvailable() {
    try {
        return !connection.isClosed();
    } catch (SQLException e) {
        e.printStackTrace();
    }

    return false;
}

池(代码未显示)有一个retrieveResource() 和returnResource(SQLConnection conn) 方法,以及BlockingQueue。它似乎工作得很好,在它的存活时间超过 15 分钟或它有 100 次使用后,它会从池中转储并添加一个新实例。由于我的项目必须非常扎实,我想知道是否会出现任何明显的问题?

标签: javamysqlsqlpool

解决方案


推荐阅读