Nothing Special   »   [go: up one dir, main page]

Pool Conexiones

Descargar como ppt, pdf o txt
Descargar como ppt, pdf o txt
Está en la página 1de 15

Pool de Conexiones

JDBC

Las conexiones a cualquier medio ( base de datos relacional, sistemas legacy, etc. ) son un recurso caro. Normalmente existe un nmero limitado de conexiones que puede mantener abiertas un determinado servidor, dependiendo de su memoria, su potencia, del sistema al que estamos accediendo, etc.

Conexiones a Bases de Datos con JDBC


Driver Manager

Programa
Cargar Driver Abrir conexin

Connection

Statement

ResultSet

Obtener objeto Statement Ejecutar sentencias Manejar resultados Cerrar objeto Statement Cerrar conexin
3

Pool de Conexiones

Muchos sistemas que actan como servidores necesitan mantener una gran escalabilidad y por lo tanto no pueden arriesgarse a que se agoten las conexiones. Qu se puede hacer?
Un pool de conexiones soluciona esta problemtica. Se trata de un conjunto limitado de conexiones que se reutilizan constantemente para dar servicio a los diferentes clientes. De este modo se aumenta la escalabilidad y tambin el rendimiento ya que no sera necesario abrir las conexiones constantemente.

Pool de Conexiones

Normalmente un pool de conexiones se inicializa con un nmero de conexiones determinado. Casi todos los servidores modernos traen normalmente pools de conexiones integrados. En un pool de conexiones cada una de estas es utilizada por mltiples clientes diferentes. Los clientes abren la conexin, acceden al servicio a travs de ella y por ltimo cierran dicha conexin. Es importante que el cliente abra y cierre la conexin en cada acceso al servicio ya que si no la cerrase no la estara devolviendo al pool y por lo tanto correramos el riesgo de agotar los recursos del servidor.

Pool de Conexiones El estado inicial de un Pool de conexiones consiste en crear las conexiones fsicas iniciales

Pool de Conexiones

Cuando un Objeto Java del Servidor Java EE requiere una conexin a travs del mtodo dataSource.getConnection(), la fuente de datos javax.sql.DataSource habla con el Pool de conexiones y ste le entrega una conexin lgica java.sql.Connection. Esta conexin lgica finalmente es recibida por el Objeto Java.

Pool de Conexiones

Pool de Conexiones

Cuando un Objeto Java del Servidor Java EE desea cerrar una conexin a travs del mtodo connection.close(), la fuente de datos javax.sql.DataSource habla con el Pool de conexiones y le devuelve la conexin lgica en cuestin.

Configuracin de context.xml
(Carpeta conf de Tomcat)

Configuracin de context.xml

<Resource name="jdbc/DBTest" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username=root" password="avantasia" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test"/>

Configuracin de server.xml

driverClassName. Nombre calificado de la clase Java del driver JDBC a utilizar


username. El usuario a pasar al driver JDBC para establecer la conexin. password. La contrasea pasar al driver JDBC para establecer la conexin. url. La URL a pasar al driver JDBC para establecer la conexin. initialSize. Nmero inicial de conexiones que crear el pool al arrancar. Por defecto es 0. No se recomienda inicializar este nmero muy elevado. maxActive. Nmero mximo de conexiones activas que puede albergar el pool al mismo tiempo, 0 si no se quiere limitar este nmero. El nmero ms alto que puede tener esta propiedad ser el nmero total de conexiones que permita nuestro repositorio de base de datos. maxIdle. Nmero mximo de conexiones activas que pueden permanecer en el pool en estado idle, sin contar las que estn siendo liberadas en ese momento, 0 si no se quiere limitar este nmero. minIdle. Nmero mnimo de conexiones activas que pueden permanecer en el pool en estado idle, sin contar las que estn siendo creadas en ese momento, 0 para no permitir ninguna.

Configuracin de webt.xml de la aplicacin

<resource-ref> <description>MySQL Connections</description> <res-ref-name>jdbc/Libreria</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>

Uso del Pool

Nota: deben importarse los paquetes: javax.sql y javax.naming

Ventajas

Resultado de un anlisis realizado (www.adictosaltrabajo.com) Para el mismo intervalo de tiempo, un servlet, al usar del pool ha sido capaz de atender 30727 peticiones mientras que sin el pool apenas fue capaz de atender 630 peticiones. En media, el servlet, al usar el pool a logrado atender las peticiones en 1 milisegundo, mientras que sin el uso del pool este tiempo se incrementa a 79 milisegundos. El rendimiento del servlet, al usar el pool ha sido de 6138 peticiones por segundo, mientras que sin el Pool decrece drsticamente a 124 peticiones por segundo.

También podría gustarte