2011-04-22 18 views
10

Estoy usando c3p0 - ComboPooledDataSource. Me estoy inicializando una vez como a continuación.cómo devolver una conexión en c3p0

private void init() { 
cpds = new ComboPooledDataSource(); 
cpds.setDriverClass(driverName); 
cpds.setJdbcUrl(url); 
cpds.setUser(userName); 
cpds.setPassword(pwd); 
} 

Me estoy haciendo una conexión de la agrupación de la siguiente manera

public synchronized Connection getLocalConnection(String ipAddr) 
    throws SQLException { 
return cpds.getConnection(); 
} 

pero no estoy seguro de si su la manera correcta para devolver la conexión de nuevo a la piscina cuando termine la ejecución de una consulta. Supongo que el

conn.close() 

simplemente devuelve la conexión a la piscina en lugar de REALMENTE CERRAR la conexión. ¿Estoy correcto o hay alguna otra manera? Pls ayuda.

Respuesta

6

Este código está inicializando

private DataSource init() { 

    DataSource unpooled = DataSources.unpooledDataSource(DB_URL, DB_USERNAME, DB_PASSWORD); 

    Map<String, Object> overrideProps = new HashMap<String, Object>(); 

    overrideProps.put("maxPoolSize", MAX_POOL_SIZE); 
    overrideProps.put("minPoolSize", MIN_POOL_SIZE); 

    return DataSources.pooledDataSource(unpooled, overrideProps); 
} 

y se obtiene la conexión de origen de datos.

public Connection getConnection() throws SQLException { 
    return dataSource.getConnection(); 
} 

Y para cerrar la conexión simplemente llame al método close().

connection.close(); 
Cuestiones relacionadas