Pool de conexiones...

cyborg
29 de Agosto del 2005
Hola

bueno igual este no es el foro adecuado, si no es asi, ruego me perdonen.

Pero me gustaria que alguien me explicara la diferencia entre hacer un pool de conexiones para acceder desde un servlet a una bbdd (mysql p.ej) a hacerlo de la forma normal, inicializando en el metodo Init.....
todo esto viene por el articulo de esta pagina..

http://www.mysql-hispano.org/page.php?id=28

Bien me ha quedado claro que en vez de llevar en el código del servlet la ruta de la bbdd, esta va en el server.xml del tomcat... bien

pero a partir de la página 5
( http://www.mysql-hispano.org/page.php?id=28&pag=5 )
habla de pools de conexiones por mas que lo leo, no veo ninguna ventaja, pues siempre esta haciendo un
Context init = new InitialContext();

y con esto no esta creando siempre conexiones como de la otra forma??
no se no entiendo.
Gracias


jhos
29 de Agosto del 2005
Hola a todos hoy 29/08/2005 he logrado hacer que funcione el pool de conexiones y el datasource. Despues de incontables horas

de investigación he llegado a las siguientes conclusiones.

Antes de nada comentar que hace un año segui al pie de la letra el manual de esta web titulado "CREAR TU PRIMERA APLICACION

WEB REAL CON TOMCAT4 Y MYSQL" y me funciono a la primera pero claro usaba el TOMCAT 4. Ahora quiero volver a hacer una

aplicacion con esta tecnologia, pero usando las nuevas versiones y es cuando me ha surgido el problema.

Primero de todo, yo estoy usando:

- TOMCAT 5.5.7
- NETBEANS 4.1
- JDK 1.5 (ó 5 como quiera que se diga ahora).

Tambien lo voy a probar sobre TOMCAT 5.5.9 Si no veis ningun mensaje nuevo es que ha funcionado esta misma solucion.

El problema de pool de conexiones viene debido a la forma de leer los datos de configuracion de la BBDD a la que vamos a

acceder. Lo que hacemos normalmente es poner dichos datos en un fichero .XML y despues con la clase INITIALCONTEXT los

leemos. Pues el fallo esta en el XML.

El error indica algo asi: Cannot create JDBC driver of class '' for connect URL 'null' o que no ha encontrado el contexo de

la apliacion, etc.

Explicare los pasos que he seguido para que podais probarlos por si os falla la solucion final:

1º He ido al fichero ..Tomcatconfserver.xml y he añadido dentro de la etiqueta <host></host>:

<Server...>
<Service...>
<Engine...>
<Host...>
<Context path="/LeerFichero" docBase="C:/Programas Java/LeerFichero/build/web" debug="0" reloadable="true">
<Resource name="jdbc/Compuestos" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="jmaestre" password="jmaestre" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/Compuestos?autoReconnect=true"/>
</Context>
</Host>
</Engine>
</Service>
</Server>

SOLO TENEIS QUE COMPIAR EL <CONTEXT>

Despues parais el Tomcat y lo volveis a lanzar y de esta manera el maldito TOMCAT leera el CONTEXT de la aplicacion y

funcionara.

PERO ATENTOS!!! el problema esta en la etiqueta <RESOURCEPARAMS> que aparece en muchas soluciones de la web. NO LA USEIS!!!

Los parametros de la conexion ponerlos dentro de <RESOURCE> como yo lo he hecho. Ya he probado lo otro y no va.

Vale esta es la solucion cutre ya que lo que interesa es que nuesta aplicacion sea independiente de los ficheros del

servidor. Es decir, lo interesante es no tener que tocar el TOMCAT.

2º Paso en nuestro caminar. Una vez que vemos que funciona el paso 1º lo que haremos sera lo siguiente. Comentamos las lineas

añadidas el server.xml (comentarlas por si se borra algo jejeje). Nos vamos al fichero xml de nuestra aplicacion. En mi caso

se llama LeerFichero.xml y en esta version de TOMCAT(5.5.7) esta alamacenado en:

../TOMCAT/conf/CATALINA/localhost/LeerFichero.xml

Abrimos el fichero y añadimos los datos del context en mi caso el fichero contiene solo esto:

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="C:/Programas Java/LeerFichero/build/web" path="/LeerFichero" debug="1" reloadable="true"

crossContext="true">

<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_Compuestos_log" suffix=".txt"

timestamp="true"/>

<Resource name="jdbc/Compuestos" auth="Container" type="javax.sql.DataSource"

url="jdbc:mysql://localhost:3306/Compuestos?autoReconnect=true"
driverClassName="org.gjt.mm.mysql.Driver"
username="jmaestre"
password="jmaestre"
maxActive="100"
maxIdle="30"
maxWait="10000"
removeAbandoned="true"
removeAbandonedTimeout="300"
logAbandoned="true"/>
</Context>

La linea LOGGER no es necesaria la podeis quitar y seguira funcionando. Ahora hacemos como antes paramos el Tomcat y lo

volvemos a lanzar, cargara la nueva configuración. Y nuestro contexto funcionara.

El resto de la configuacion lo podeis ver en el manual que antes dije lo unico que cambia es el contenido del fichero de

configuracion de la aplicacion el LeerFichero.xml en mi caso. Recordad de comentar el codigo añadido en el server.xml.

Espero haber ayudado a alguien mas.

fredlankovich
29 de Agosto del 2005
La diferencia es que al utilizar pool de conexiones te ahorras el tiempo de crear una nueva conexion, utilizando una ya existente. Lo de new InitialConext(), es para acceder al recurso JNDI (creo), asi que no creo que tenga nada que ver con la forma de obtener conexion a la BBDD, si no mas bien, para obtener el recurso JNDI del pool de conxiones