Comme beaucoup de projets Opensource, le serveur d'applications Tomcat (disponible sur le site Apache : http://jakarta.apache.org) manque parfois de documentation.
Cette rubrique tente de répondre à quelques questions courantes sur la mise en oeuvre et la configuration de Tomcat.
Ces indications s'appliquent à la version 4 de Tomcat, initialement nommée Catalina.
Comment configurer une source de données Oracle dans Tomcat ?
Configuration du serveur d'applications
Il faut tout d'abord obtenir la dernière version du
pilote JDBC Oracle, à partir du site d'Oracle ou
du répertoire d'installation du serveur. Il est nommé
classes12.zip
.
Renommer ce fichier en classes12.jar
(nécessaire pour un chargement automatique) et le copier dans
le répertoire $CATALINA_HOME/common/lib
,
CATALINA_HOME étant le répertoire d'installation de tomcat
Définir dans le fichier $CATALINA_HOME/conf/server.xml
un contexte pour l'application web à configurer. Par exemple,
pour le contexte par défaut :
<Context path="" docBase="ROOT" debug="0"> </Context>
Ajouter à ce contexte les informations de connexion à la base de données :
<ResourceParams name="jdbc/masource"> <parameter><name>user</name><value>scott</value></parameter> <parameter><name>password</name><value>tiger</value></parameter> <parameter><name>driverClassName</name> <value>oracle.jdbc.driver.OracleDriver</value></parameter> <parameter><name>driverName</name> <value>jdbc:oracle:thin:@machine:1521:instance</value></parameter> </ResourceParams>
Les paramètres utilisateur et mot de passe ne posent
pas de problèmes. Les informations importantes sont le
nom de la classe du driver
oracle.jdbc.driver.OracleDriver
et l'URL de connexion. Celle-ci indique que le driver utilisé
est le thin (type 4), que le serveur Oracle se trouve sur
machine, que le listener Net8 écoute sur le port 1521
et que l'instance Oracle accédée est instance.
Ce driver a le double avantage d'être léger et d'être plus performant que le driver OCI dans la plupart des cas
Configuration de l'application web
Le fichier de configuration web.xml
de l'application web doit contenir la définition
des ressources utilisées. Il s'agit uniquement de
références, la configuration de la base de données
concrète étant déportée dans le serveur d'application.
Définition de la source de données :
<resource-ref> <res-ref-name>jdbc/masource</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
où masource est le nom de la source de données. CONTAINER signifie que les données d'authentification (utilisateur/mot de passe) son gérées par le serveur d'applications.
Test d'accès à la base de données
Pour tester la configuration précédente, créer une page Jsp contenant le code suivant dans le répertoire de l'application web :
<%try { javax.naming.InitialContext ctx = new javax.naming.InitialContext(); %> Contexte JNDI : <%=ctx%><br> <% javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("java:comp/env/jdbc/masource"); %> DataSource : <%=ds%><br> <% java.sql.Connection connection = ds.getConnection(); %> Connexion : <%=connection%><br> <% connection.close(); } catch (Exception e) { %> Erreur : <%=e%> <% } %>
Cette page initialise le contexte JNDI, récupère la source de données et tente d'obtenir une connexion
Comment configurer une source de données DB2 dans Tomcat ?
La procédure exposée pour Oracle s'applique à n'importe quel gestionnaire de base de données. La différence se situant au niveau du pilote.
Pour DB2, le fichier du pilote est nommé
db2java.zip
. Dans les paramètres de configuration,
il faut indiquer :
<ResourceParams name="jdbc/masource"> <parameter><name>user</name><value>db2admin</value></parameter> <parameter><name>password</name><value>db2admin</value></parameter> <parameter><name>driverClassName</name> <value>COM.ibm.db2.jdbc.app.DB2Driver</value></parameter> <parameter><name>driverName</name> <value>jdbc:db2:instance</value></parameter> </ResourceParams>
Afin d'utiliser le driver de type 2 (qui nécessite un
client DB2 sur la machine). Il est aussi possible d'utiliser
le driver net en remplaçant le driver par
COM.ibm.db2.jdbc.net.DB2Driver
et l'URL
par jdbc:db2://machine:6789/instance
Comment installer tomcat en tant que service NT ?
Le lancement manuel de tomcat par le script startup.bat
est idéal pendant le développement, mais doit être automatisé
pour une utilisation en production.
L'exécutable tomcat.exe disponible dans le répertoire bin de Tomcat permet d'installer le serveur en tant que service NT. Les principaux paramètres sont :
- Le nom du service NT (utilisé dans les commandes
net start
) - Le chemin de la librairie principale de la JVM
- Le CLASSPATH de démarrage
- La racine d'installation tomcat
- La racine des applications web
- Le répertoire courant (d'exécution)
- Les arguments de la JVM, en particulier la taille du tas
(
-Xms128m -Xmx256m
) - La classe et la commande de démarrage (toujours start et
org.apache.catalina.startup.Bootstrap
) - La classe et la commande d'arrêt (toujours stop et
org.apache.catalina.startup.Bootstrap
) - Les chemins des traces out et err
Exemple de ligne de commande :
"%TOMCAT_HOME%\bin\tomcat.exe" \ -install "tomcat" \ "%JAVA_HOME%\jre\bin\server\jvm.dll" \ "-Djava.class.path=%TOMCAT_HOME%\bin\bootstrap.jar;%JAVA_HOME%\lib\tools.jar" \ "-Dcatalina.home=%TOMCAT_HOME%" \ -Xrs -Xms128m -Xmx256m \ -start org.apache.catalina.startup.Bootstrap -params start \ -stop org.apache.catalina.startup.Bootstrap -params stop \ -out "%TOMCAT_HOME%\logs\stdout.log" -err "%TOMCAT_HOME%\logs\stderr.log"