sábado, 9 de mayo de 2009

Funcionamiento de un Pool de conexiones

Una aplicación Web que accede a un RDBMS (Relational DataBase
Management System
) remoto a través de un driver de Tipo 4:
100% Java a través de conexión de Red directa
establece una
conexión física con una BDS. El establecicimiento de dicha
conexión consume CPU, memoria y tiempo.

Una aplicación Web realiza un servicio para varios clientes, si el Sitio Web tiene un nivel de impactos relativamente alto es evidente que una sola conexión con la BDS no es suficiente porque mientras un usuario la está utilizando, pueden haber otros usuarios que estén esperando dicha conexión.

Si queremos que un Sitio Web pueda crear más de una conexión a una misma BDS, lo tendremos que hacer nosotros mismos creando y destruyendo conexiones físicas a la BDS. Esto tiene varios inconvenientes

  • en vez de dedicarnos al desarrollo de la lógica de negocio, nos tenemos que involucrar en detalles de bajo nivel de programación de Bases de Datos
  • cada conexión como se ha mencionado anteriormente tiene un coste adicional de CPU, memoria y tiempo

Para solventar estos inconvenientes el JDBC Optional Package API nos ofrece un Pool de conexiones o Reserva de conexiones que funciona de forma transparente y no crea un coste adicional a nuestras aplicaciones Web.

El estado inicial de un Pool de conexiones consiste en crear las conexiones físicas iniciales


Cuando un Objeto Java del Servidor J2EE requiere una conexión a través del método dataSource.getConnection(), la fuente de datos javax.sql.DataSource habla con el Pool de conexiones y éste le entrega una conexión lógica java.sql.Connection. Esta conexión lógica finalmente es recibida por el Objeto Java

Cuando un Objeto Java del Servidor J2EE desea cerrar una conexión a través del método connection.close(), la fuente de datos javax.sql.DataSource habla con el Pool de conexiones y le devuelve la conexión lógica en cuestión.

No hay comentarios: