Pool de conexiones en Java

Hola, estoy desarrollando una aplicación cliente en Java para acceder a distintos SGBDs y me gustaría utilizar un pool de conexiones. Estuve mirando el Api JDBC 3.0, pero resulta que solo vienen las interfaces:
"ConnectionPoolDataSource" y "PooledConnection". Me sería de gran utilidad si me pudieran pasar la implementación de estas interfaces.
Gracias

5 respuestas

Respuesta
1
No domino esa área
Respuesta
1
Lo cierto es que no he usado las interfaces, cuando llegaron ya habíamos hecho N aplicaciones y era más fácil Cortar y pegar.
Lo cierto es que las clases que hacemos son un objeto simple con las siguientes características:
Atributos:
- Un vector vacío para agrupar las conexiones
- Un contador de las conexiones generales generadas
- Auxiliares
Métodos:
- Un constructor privado con un getInstance() synchronized para que solo se genere un pool en un entorno.
- Un getConnection() syncronized también que mira si hay conexiones libres en el vector y si no las hay genera una nueva (incrementando un contador de modo que controlas el número máximo de conexiones, si no hay disponibles lanza un error)
- Un returnConection(con..) que añade la conexión al vector y la deja disponible
- Un destroy() que las cierra.
Si quieres puedo mandarte el código de la clase por si te orienta.
Respuesta
1
Aquí existe un buen ejemplo
http://www.josephsmiller.com/Computers/Documents/downloads2.htm
Tienes que registrarte primero. Es gratis.
Respuesta
1
Hay dos maneras de manejar el Pool de conexiones, una de ellas que es la que te mosteraré más adelante es mediante el JDBC de java, que lo que hace es controlar tus conexiones para que con una sola conexión a tu base de datos puedas hacer tantas sentencias sin saturar de transacciones, y otra manera es obteniendo el Pool de conexiones de tu base de datos, sin configurar nada en tu código (tal vez 2 que 3 lineas) que haría lo mismo que el paso uno pero en vez de que tu lo controles las conexiones, la misma base lo controla. ¿Ahora cuál es más recomendable? Pues es el de la base osea la dos, pero por lógica la base debe estar actualizada y preparada para ello.
Bueno de antemano se declaran las variables.
private ConnectionPoolDataSource ocpdsL=null;//Pool de conexiones para beans locales
private PooledConnection pooledConnection=null; //pool de conexiones
private PooledConnection pooledConnectionLocal=null; //pool de conexiones
protected Connection mssql=null; //conexion de base de datos
A
Luego se instancia y obtiene la conexión a la BD
if( this.pooledConnectionLocal==null)
{
this.ocpds = new ConnectionPoolDataSource();
ocpds.setURL("jdbc:oracle:thin:@server");
ocpds.setUser(this.usuarioSQL);
ocpds.setPassword(this.passwordSQL);
this.pooledConnectionLocal = ocpds.getPooledConnection();
// Get a Logical connection
}
Y ahora se obtiene el conexion y guarda en el objeto Connecion
this.pooledConnectionLocal = ocpds.getPooledConnection();
mssql=this.pooledConnectionLocal.getConnection();
Y listo con la variable mmssql, puedes trabajar tus Queries y DMLs
Respuesta
1
Siento decirte que no tengo la implementación de dichas clases.
He estado mirando en buscadores a ver si las encontraba, y lo que he encontrado es que la implementan los fabricantes de bases de datos en su drivers. Por lo que me dices en tu pregunta has estado mirando en la api, ¿Has probado a mirar en la implementación de un driver jdbc a ver si viene con estos?
Lo más probable es que cada driver venga acompañado de su implementación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas