Origen de datos JNDI en Tomcat

11/10/2006

Tomcat
Si estás tratando de configurar un origen de datos JNDI en Tomcat (a partir de la versión 5.5) y recibes un mensaje tal que así:

org.apache.tomcat.dbcp.dbcp.SQLNestedException
Cannot create JDBC driver of class ‘ ‘ for connect URL ‘null’

tal vez te ocurra lo que me sucedió a mí y es que resulta que ya no se utilizan los “resource-params” que se solían usar (en versiones anteriores a la 5.5). Ahora solamente se pueden definir los recursos JNDI mediante atributos.

Hay que cambiar esto:

<Context …>

<Resource name=”jdbc/EmployeeDB” auth=”Container”
type=”javax.sql.DataSource”/>
<ResourceParams name=”jdbc/EmployeeDB”>
<parameter>
<name>username</name>
<value>dbusername</value>
</parameter>
<parameter>
<name>password</name>
<value>dbpassword</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.hsql.jdbcDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:HypersonicSQL:database</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>8</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>4</value>
</parameter>
</ResourceParams>

</Context>

Por esto:

<Context …>

<Resource name=”jdbc/EmployeeDB” auth=”Container”
type=”javax.sql.DataSource” username=”dbusername” password=”dbpassword”
driverClassName=”org.hsql.jdbcDriver” url=”jdbc:HypersonicSQL:database”
maxActive=”8″ maxIdle=”4″/>

</Context>

Vía

NOTA: Si además, lo que queremos es que nuestro origen de datos esté accesible para toda aplicación web, basta con que la definición del recurso y sus parámetros se pongan dentro de la etiqueta <DefaultContext></DefaultContext> de la definición del <Host name=”localhost”></Host> del archivo server.xml.

Significado de los parámetros

  • url:
    La cadena de conexión de la base de datos
  • driverClassName:
    El nombre de la clase del driver JDBC
  • username:
    El nombre de usuario para acceder a la base de datos
  • password:
    La constraseña del usuario para acceder a la base de datos
  • maxActive:
    El número máximo de conexiones en el pool de conexiones (0=ilimitado)
  • maxIdle:
    El número máximo de conexiones inactivas a retener en el pool de conexiones (0=ilimintado)
  • maxWait:
    El tiempo máximo a esperar para obtener una conexión, en milisegundos (-1=ilimitado)
  • removeAbandoned:
    Si removeAbandoned = true entonces cuando haya pocas conexiones disponibles en el pool de conexiones se recuperará y reciclará cualquier conexión abandonada que se encuentre.
  • removeAbandonedTimeout:
    El número de segundos que una conexión tiene que estar inactiva hasta que sea considerada abandonada por el pool de conexiones (por defecto 300).
  • logAbandoned:
    Si logAbandoned = true el pool de conexiones guardará un seguimiento de pila del código que abandonó un recurso de conexión.

vía

7 Responses to “Origen de datos JNDI en Tomcat”

  1. José Says:

    Muy interesante, aveces los detalles nos llevan mucho tiempo, gracias. Sabes amigo, estoy intentando utilizar tomcat 5.5 o superior para usar EJB 3.0 y el entity manager y no se como lograr obtener una instancia del objeto mediante injection, si supieras algo?, gracias. Y sigue colaborando Gracias

  2. Gustavo Says:

    Excelente Aclaración, me resultó muy valiosa al actualizar mi versión de Tomcat.

  3. jojuan Says:

    Perdon por la pregunta, pero soy nuevo en esto del tomcat. me podrias decir donde pongo este JNDI.

  4. Anonimous Says:

    Muchas gracias, era justo el error que tenía.

  5. Christian Galvez Says:

    el JNDI tienes que ponerlo en el server.xml del tomcat (lo encuentras dentro de la carpeta “..\conf” en la carpeta de instalacion del tomcat).

  6. julio Says:

    que diferencia hay entre poner el jndi en el server.xml o en el context.xml

    • rubensa Says:

      Si lo pones en el context.xml, el origen JNDI solamente está definido a nivel del módulo web.

      Si lo pones en el server.xml, el origen JNDI está definido a nivel de servidor (para todos los módulos web).


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: