Configuration d'une source de données pour Java avec le serveur Web Apache Tomcat

Une source de données est une connexion nommée à une base de données. Vous devez spécifier une source de données dans le serveur d'applications Web pour publier un service d'entités sur le serveur de données spatiales ArcGIS pour la plate-forme Java. En règle générale, l'objet source de données est configuré avec un service de nom basé sur l'interface de l'API JNDI (Java Naming and Directory).

Une fois que vous avez installé et configuré Tomcat, procédez comme suit pour le préparer à une utilisation avec le serveur de données spatiales ArcGIS :

Placez le pilote JDBC dans le répertoire d'accueil de Tomcat.

Vous devez placer le pilote JDBC de votre SGBD dans le répertoire lib de $CATALINA_HOME.

Modifier le fichier context.xml Tomcat

Si vous utilisez un serveur Web Apache Tomcat, vous devez spécifier votre source de données dans le fichier de configuration Web par défaut : context.xml. Pour ce faire, procédez comme suit :

  1. Naviguez vers le répertoire conf, contenu dans le répertoire d'installation de Tomcat.
  2. Effectuez une copie de sauvegarde du fichier context.xml.
  3. Ouvrez le fichier context.xml dans un éditeur de texte.
  4. Modifiez les informations contenues dans l'élément <Nom de la ressource> pour qu'il fonctionne pour votre site. (Des exemples sont proposés dans cette rubrique.) L'élément <Nom de la ressource> est imbriqué dans l'élément <Contexte>.

    D'autres éléments peuvent être contenus dans l'élément <Contexte>, mais vérifiez que l'élément <Nom de la ressource> soit situé à un niveau en-dessous de l'élément <Contexte> et ne soit pas imbriqué dans l'un des autres éléments.

  5. Enregistrez et fermez le fichier context.xml.
  6. Redémarrez le serveur Tomcat.

Si vous n'ajoutez pas votre source de données au fichier context.xml, ou si vous ne préfacez pas l'attribut de l'élément <Nom de la ressource> avec jdbc/, le message d'erreur suivant s'affiche :

Name jdbc is not bound in this Context

Exemples

Les éléments suivants sont des exemples de configuration d'une source de données dans le fichier context.xml Tomcat pour chacune des bases de données prises en charge. Voici des exemples de deux types de pools de connexions pour chaque base de données : un pool de connexions de base de données (DBCP) et un pool de connexions JDBC. Le pool de connexions JDBC est recommandé par Apache. Reportez-vous à la documentation Apache Tomcat pour plus d'informations et pour une présentation des attributs que vous pouvez utiliser dans l'élément <Nom de ressource>.

AstuceAstuce:

Si vous devez configurer plusieurs sources de données, adoptez des noms de source de données reflétant les propriétés de la source de données. Par exemple, vous pouvez inclure dans la source de données les noms du serveur, de la base de données et de l'utilisateur. Cela vous permettra d'identifier les sources de données sans avoir à rechercher les propriétés dans les fichiers de serveur d'application Web ou les consoles.

PostgreSQL

Vous trouverez ci-dessous un exemple d'élément <Nom de la ressource> pour PostgreSQL qui utilise DBCP. Les valeurs signalées par un X indiquent des informations spécifiques à votre site que vous allez saisir.

<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>

Dans cet exemple; le nom de la ressource est jdbc/pgservername, et la source de données est une base de données PostgreSQL (pgdbname) qui écoute sur le port 5432 sur le serveur 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>

Voici un exemple de connexion à une base de données PostgreSQL qui utilise un pool de connexions JDBC :

<Context>
     <Resource 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="20"
               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

Vous trouverez ci-dessous un exemple d'élément <Ressource> pour Oracle. Les valeurs signalées par un X indiquent des informations spécifiques à votre site que vous allez saisir.

<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>

Dans cet exemple; le nom de la ressource est jdbc/oraservername, et la source de données est une base de données Oracle sur le serveur oraservername qui écoute sur le port de base de données 1521. Le SID Oracle est osid. Le SID Oracle doit être configuré avant l'inscription de la source de données.

<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>

Voici un exemple de connexion à une base de données Oracle qui utilise un pool de connexions JDBC :

<Context>
    <Resource 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="20"
              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

Vous trouverez ci-dessous un exemple d'élément <Ressource> pour DB2. Les valeurs signalées par un X indiquent des informations spécifiques à votre site que vous allez saisir.

<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>

Dans cet exemple; le nom de la ressource est jdbc/db2servername, le serveur DB2 est db2servername, le port de base de données est 60000 et la base de données cataloguée est 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>

Voici un exemple de connexion à une base de données DB2 qui utilise un pool de connexions JDBC :

<Context>
    <Resource 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="20"
              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>

Thèmes connexes

9/13/2013