Configuración de la fuente de datos para Java cuando utiliza un servidor Web Apache Tomcat

Una fuente de datos es una conexión denominada para la base de datos. Debe especificar una fuente de datos en el servidor de aplicaciones Web para publicar un servicio de entidades en ArcGIS Spatial Data Server para la plataforma Java. El objeto de la fuente de datos está configurado con un servicio de nomenclatura basado en la basado en la API de Java Naming and Directory Interface (JNDI).

Después de haber instalado y configurado Tomcat, haga lo siguiente para prepararlo para su uso con ArcGIS Spatial Data Server:

Coloque el controlador JDBC en el directorio de inicio de Tomcat

Debe ubicar el controlador JDBC de su DBMS en el directorio lib de $CATALINA_HOME.

Modificar el archivo context.xml de Tomcat

Si utiliza un servidor Web Apache Tomcat, debe especificar la fuente de datos en el archivo de configuración Web predeterminado: context.xml. Para editar context.xml, haga lo siguiente:

  1. Navegue hasta el directorio conf en el directorio de instalación de Tomcat.
  2. Realice una copia de seguridad del archivo context.xml.
  3. Abra el archivo context.xml en un editor de texto.
  4. Modifique la información en el elemento <Nombre del recurso> para trabajar en su sitio. (Se proporcionan ejemplos en este tema). El elemento <Nombre del recurso> se anida dentro del elemento <Contexto>.

    Puede haber otros elementos dentro del elemento <Contexto>, pero asegúrese de que el elemento <Nombre del recurso> se encuentre un nivel abajo del elemento <Contexto> y no anidado dentro de uno de los otros elementos.

  5. Guarde y cierre el archivo context.xml.
  6. Reinicie el servidor Tomcat.

Si no agrega la fuente de datos al archivo context.xml, o si usted no precede el atributo del elemento <Nombre del recurso> con jdbc/, recibirá el siguiente mensaje de error:

Name jdbc is not bound in this Context

Ejemplos

Los siguientes son ejemplos de configuraciones de fuente de datos en el archivo context.xml de Tomcat para cada una de las bases de datos compatibles. Estos son ejemplos de los dos tipos de grupos de conexión para cada base de datos: un grupo de conexión de base de datos (DBCP) y un grupo de conexión JDBC.

NotaNota:

En Apache se recomienda el grupo de conexión JDBC. Consulte la documentación de Apache Tomcat para obtener más información y una explicación de los atributos que puede utilizar en el elemento <Nombre del recurso>.

PostgreSQL

El siguiente es un ejemplo del elemento <Recurso> de PostgreSQL que utiliza un DBCP. Los valores marcados con X indican información específica para el sitio que proporcionará.

<Context>
    <Resource name="jdbc/X" 
              auth="Container"
              type="javax.sql.DataSource" 
              driverClassName="org.postgresql.Driver"
              url="jdbc:postgresql://X:X/X"
              username="X" 
              password="X" 
              maxActive="X" 
              maxIdle="X" 
              maxWait="X"/>
</Context>

En este ejemplo, el nombre del recurso es jdbc/pgservername y la fuente de datos es una base de datos de PostgreSQL (pgdbname) que está en línea en el puerto 5432 en servidor pgservername.

<Context>
    <Resource name="jdbc/pgservername_pgdbname_pgusername" 
              auth="Container"
              type="javax.sql.DataSource" 
              driverClassName="org.postgresql.Driver"
              url="jdbc:postgresql://pgservername:5432/pgdbname"
              username="pgusername" 
              password="pgpassword246" 
              maxActive="20" 
              maxIdle="10" 
              maxWait="-1"/>
</Context>

El siguiente ejemplo es para la misma base de datos de PostgreSQL, pero utiliza un grupo de conexión JDBC:

<Context>
     <Resource 
               type="javax.sql.DataSource"
               name="jdbc/pgservername_pgdbname_pgusername" 
               factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
               driverClassName="org.postgresql.Driver"
               url="jdbc:postgresql://pgservername:5432/pgdbname" 
               username="pgusername"
               password="pgpassword246"
               initialSize="0"
               maxActive="80" 
               maxIdle = "30" 
               minIdle="20"
               timeBetweenEvictionRunsMillis="30000"
               minEvictableIdleTimeMillis="60000"
               testOnBorrow="true"
               validationQuery="SELECT 1" 
               validationInterval="30000" 
               removeAbandoned="true"
               removeAbandonedTimeout="60" 
               logAbandoned="true" 
               abandonWhenPercentageFull="60"
               jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"/>
</Context>

Oracle

El siguiente es un ejemplo del elemento <Recurso> para Oracle. Los valores marcados con X indican información específica para el sitio que proporcionará.

<Context>
    <Resource name="jdbc/X" 
              auth="Container"
              type="javax.sql.DataSource" 
              driverClassName="oracle.jdbc.OracleDriver"
              url="jdbc:oracle:thin:@X:X:X"
              username="X" 
              password="X" 
              maxActive="X" 
              maxIdle="X"
              maxWait="X"/>
</Context>

En este ejemplo, el nombre del recurso es jdbc/oraservername y la fuente de datos es una base de datos de Oracle en servidor oraservername que está en línea en el puerto de la base de datos 1521. El SID de Oracle es osid. El SID de Oracle se debe configurar antes de registrar la fuente de datos.

<Context>
    <Resource name="jdbc/oraservername_osid_orausername" 
              auth="Container"
              type="javax.sql.DataSource" 
              driverClassName="oracle.jdbc.OracleDriver"
              url="jdbc:oracle:thin:@oraservername:1521:osid"
              username="orausername" 
              password="0rapassword123" 
              maxActive="20" 
              maxIdle="10"
              maxWait="-1"/>
</Context>

El siguiente ejemplo es para la misma base de datos de Oracle, pero utiliza un grupo de conexión JDBC:

<Context>
    <Resource 
              type="javax.sql.DataSource"
              name="jdbc/oraservername_osid_orausername" 
              factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
              driverClassName="oracle.jdbc.driver.OracleDriver"
              url="jdbc:oracle:thin:@oraservername:1521:osid" 
              username="orausername"
              password="0rapassword123"
              initialSize="0"
              maxActive="80" 
              maxIdle = "30" 
              minIdle="20"
              timeBetweenEvictionRunsMillis="30000"
              minEvictableIdleTimeMillis="60000"
              testOnBorrow="true"
              validationQuery="SELECT 1 FROM DUAL" 
              validationInterval="30000" 
              removeAbandoned="true"
              removeAbandonedTimeout="60" 
              logAbandoned="true" 
              abandonWhenPercentageFull="60"
              jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"/>
</Context>

DB2

El siguiente es un ejemplo del elemento <Recurso> para DB2. Los valores marcados con X indican información específica para el sitio que proporcionará.

<Context>
    <Resource name="jdbc/X" 
              auth="Container"
              type="javax.sql.DataSource" 
              driverClassName="com.ibm.db2.jcc.DB2Driver"
              url="jdbc:db2://X:X/X"
              username="X" 
              password="X" 
              maxActive="X" 
              maxIdle="X"
              maxWait="X"/>
</Context>

En este ejemplo, el nombre del recurso es jdbc/db2servername, el servidor DB2 es db2servername, el puerto de la base de datos es 60000 y la base de datos catalogada es db2dba.

<Context>
    <Resource name="jdbc/db2servername_db2dba_db2username" 
              auth="Container"
              type="javax.sql.DataSource" 
              driverClassName="com.ibm.db2.jcc.DB2Driver"
              url="jdbc:db2://db2servername:60000/db2dba"
              username="db2username" 
              password="db2password975" 
              maxActive="20" 
              maxIdle="10"
              maxWait="-1"/>
</Context>

El siguiente ejemplo es para la misma base de datos DB2, pero utiliza un grupo de conexión JDBC:

<Context>
    <Resource 
              type="javax.sql.DataSource"
              name="jdbc/db2servername_db2dba_db2username" 
              factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
              driverClassName="com.ibm.db2.jcc.DB2Driver"
              url="jdbc:db2://db2servername:60000/db2dba" 
              username="db2username"
              password="db2password975"
              initialSize="0"
              maxActive="80" 
              maxIdle = "30" 
              minIdle="20"
              timeBetweenEvictionRunsMillis="30000"
              minEvictableIdleTimeMillis="60000"
              testOnBorrow="true"
              validationQuery="VALUES 1" 
              validationInterval="30000" 
              removeAbandoned="true"
              removeAbandonedTimeout="60" 
              logAbandoned="true" 
              abandonWhenPercentageFull="60"
              jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"/>
</Context>

9/11/2013