HikariCP 连接泄漏但连接已关闭

HikariCP Connection Leaks but connections are closed

美好的一天,接下来,我关闭了所有地方的 MySQL 连接,但我仍然有连接泄漏。经过几周的研究,我找到了解决方案。

问题:

Connection method:
// Gets the MySQL connection.
public Connection getMySQLConnection () throws SQLException
{
    // Checks if the data source is not null!
    if (this.hikariDataSource != null)
    {
        // Returns the connection.
        return this.hikariDataSource.getConnection();
    }
    else
    {
        // Debugs that the data source is null.
        StringUtils.sendInformation("HikariDataSource is null!");

        // Returns null.
        return null;
    }
}

这是我的问题的解决方案。您也需要关闭 HikariDataSource,如果需要连接,您需要再次打开它。

Method:
// Gets the MySQL connection.
public Connection getMySQLConnection () throws SQLException
{
    // Checks if the data source is not null!
    if (this.hikariDataSource != null)
    {
        if (this.hikariDataSource.isClosed())
            this.setHikariConfig();

        // Returns the connection.
        return this.hikariDataSource.getConnection();
    }
    else
    {
        this.setHikariConfig();

        if (this.hikariDataSource != null)
            return this.hikariDataSource.getConnection();

        StringUtils.sendServerInformation("Datasource is null!", "HikariCP");

        // Returns null.
        return null;
    }
}

public void closeMySQLConnection () throws SQLException
{
    if (this.hikariDataSource != null)
    {
        if (!(this.getMySQLConnection().isClosed()))
            this.getMySQLConnection().close();

        if (!(this.hikariDataSource.isClosed()))
            this.hikariDataSource.close();
    }
}