Создание моего собственного пула соединений SQL, интересно, если это плохая практика / есть ошибки - PullRequest
0 голосов
/ 22 октября 2018

Итак, я создал свой собственный пул подключений MySQL, используя очередь блокировки, заполненную списком объектов SQLConnection:

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 раз, он выгружается из пула и добавляется новый экземпляр.Поскольку мой проект должен быть очень солидным, мне было интересно, есть ли какие-либо очевидные проблемы, которые возникают с этим?

...