Configurar datasource en Tomcat

Posted on dom 15 abril 2018

Esta es una mini receta para configurar un datasource visible a todos los contextos. Las instrucciones expuestas fueron probadas en Tomcat9 y $CATALINA_HOME corresponde al path donde está instalado tomcat.

  1. Debemos editar el archivo $CATALINA_HOME/conf/server.xml y agregar el datasource como recurso global:

    <GlobalNamingResources>
    ...
        <Resource
            name="jdbc/unNombreRemote"
                global="jdbc/unNombreRemote"
                auth="Container"
                type="javax.sql.DataSource"
                driverClassName="oracle.jdbc.OracleDriver"
                url="jdbc:oracle:thin:@localhost:1521:xe"
                username="test"
                password="test"
                maxTotal="10"
                maxIdle="5"/>
    ...
    </GlobalNamingResources>
    
  2. Luego debemos enlazar el recurso. Esto se puede hacer de dos formas:

    • Automáticamente para todos los contextos, editando el archivo $CATALINA_HOME/conf/context.xml y agregar dentro de <Context> </Context>

      <ResourceLink name="jdbc/miDatasource" global="jdbc/unNombreRemote" type="javax.sql.DataSource"/>
      
    • Declarando explícitamente el recurso en cada contexto de aplicación, creando/editando META-INF/context.xml en nuestro proyecto para que quede así:

      <Context>
      ... 
          <ResourceLink name="jdbc/miDatasource" global="jdbc/unNombreRemote" type="javax.sql.DataSource"/>
      ...
      </Context>
      

Ahora ya podremos referenciar el datasource, por ejemplo dentro de la configuración de una aplicación spring:

spring.datasource.jndi-name=java:/comp/env/jdbc/miDatasource