2010-01-20 16 views
5

Estoy tratando de implementar una solución con c3p0 por primera vez. Entiendo cómo inicializar el conjunto de conexiones y "check out" una conexión de la agrupación de la siguiente manera:c3p0 Connection Checkin

ComboPooledDataSource cpds = new ComboPooledDataSource(); 
cpds.setDriverClass(driverClass); 
cpds.setJdbcUrl(url); 
cpds.setUser(username); 
cpds.setPassword(password); 
Connection conn = cpds.getConnection(username, password); 

Pero estoy teniendo problemas para encontrar la manera de "registro" de una conexión que ya se utiliza para volver a la piscina. ¿Cómo voy a hacer esto? ¿Hay algo que estoy haciendo mal aquí?

Respuesta

5

La liberación es totalmente transparente para el usuario. Ver here para una explicación más detallada.

Asegúrese de cerrar() la conexión y no mantener más referencia (eso evitaría el correcto GC).

+0

¡Gracias, eso funciona! – jtbradle

+0

el enlace está hablando de "Limpiar después de c3p0 PooledDataSources", y no liberar la conexión ... tal vez el enlace ha cambiado desde 2010 .... – OhadR

4

Creo que la conexión se devuelve al grupo cuando la cierra.

+2

Me preguntaba si ese era el caso. Entonces, ¿no está realmente cerrado en la fuente de datos? Supongo que c3p0 simplemente ajusta la implementación de la conexión del origen de datos, intercepta la llamada close() y reutiliza la conexión. ¿Es eso correcto? – jtbradle