Отменяет ли закрытие пула соединений в службе REST цель пула соединений?

Я использую BoneCP для пула подключений jdbc к моей базе данных mysql. Я использую примерbonecp в своем приложении REST.

Если каждый запрос REST открывает и закрывает пул соединений, не нарушает ли это в первую очередь точку пула соединений?

Вот код:

 public class ExampleJDBC {

/** Start test
 * @param args none expected.
 */
public static void main(String[] args) {
    BoneCP connectionPool = null;
    Connection connection = null;

    try {
        // load the database driver (make sure this is in your classpath!)
        Class.forName("org.hsqldb.jdbcDriver");
    } catch (Exception e) {
        e.printStackTrace();
        return;
    }

    try {
        // setup the connection pool
        BoneCPConfig config = new BoneCPConfig();
        config.setJdbcUrl("jdbc:hsqldb:mem:test"); // jdbc url specific to your database, eg jdbc:mysql://127.0.0.1/yourdb
        config.setUsername("sa"); 
        config.setPassword("");
        config.setMinConnectionsPerPartition(5);
        config.setMaxConnectionsPerPartition(10);
        config.setPartitionCount(1);
        connectionPool = new BoneCP(config); // setup the connection pool

        connection = connectionPool.getConnection(); // fetch a connection

        if (connection != null){
            System.out.println("Connection successful!");
            Statement stmt = connection.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT 1 FROM      INFORMATION_SCHEMA.SYSTEM_USERS"); // do something with the connection.
            while(rs.next()){
                System.out.println(rs.getString(1)); // should print out "1"'
            }
        }
        connectionPool.shutdown(); // shutdown connection pool.
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
} 
 }

person Atma    schedule 07.06.2012    source источник


Ответы (1)


Да, это не позволит открыть или закрыть пул соединений более одного раза в (типичном) жизненном цикле вашего приложения. Вместо этого вы должны каждый раз получать соединение из предварительно установленного пула.

person Daniel Pittman    schedule 07.06.2012