Using BoneCP: Handling connections from the pool

此生再无相见时 提交于 2019-12-30 03:19:06

问题


I have just started using BoneCP and this is my first time using a connection pool. I'm somewhat confused as to how I am supposed to use it. Currently I am saving the BoneCP-object as a static variable, and thus I can use it between different connections.

When I'm done with the connection, I close it with connection.close().
Should I do this, or should I not close it to enable it to be reused by the pool?

This is my current implementation to get a connection:

private static BoneCP connectionPool;

public Connection getConnection() throws SQLException {
    if (connectionPool == null) {
        initPool();
    }
    return connectionPool.getConnection();
}

private void initPool() throws SQLException {
    BoneCPConfig config = new BoneCPConfig();
    config.setJdbcUrl(DB_URL);
    config.setUsername(DB_USERNAME);
    config.setPassword(DB_PASSWORD);
    config.setMinConnectionsPerPartition(5);
    config.setMaxConnectionsPerPartition(10);
    config.setPartitionCount(1);
    connectionPool = new BoneCP(config);
}

Does this seem correct or have I misunderstood how I am supposed to use BoneCP?


回答1:


Other than making your private static final and changing the init to a static block (or alternaitvely making your getConnection synchronized), you are ok.

You are correct you MUST do connection.close() to return to the pool. When your app shuts down, shut down the connection pool



来源:https://stackoverflow.com/questions/6944810/using-bonecp-handling-connections-from-the-pool

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!