Использование BoneCP: обработка соединений из пула - PullRequest
7 голосов
/ 04 августа 2011

Я только начал использовать BoneCP, и я впервые использую пул соединений.Я несколько смущен тем, как я должен это использовать.В настоящее время я сохраняю объект BoneCP как статическую переменную, и, таким образом, я могу использовать его между различными соединениями.

Когда я закончу с соединением, я закрываю его с помощью connection.close().
Я делаю это, или я не должен закрывать его, чтобы разрешить его повторное использование в пуле?

Это моя текущая реализация для получения соединения:

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);
}

Это кажется правильным илия неправильно понял, как я должен использовать BoneCP?

1 Ответ

9 голосов
/ 04 августа 2011

Кроме того, что вы делаете свою личную статическую финальную часть и меняете init на статический блок (или, наоборот, делаете синхронизацию getConnection), вы в порядке.

Вы правы, вы ДОЛЖНЫ сделать connection.close () для возвратав бассейн.Когда ваше приложение закрывается, выключите пул соединений

...