Serveur Tomcat

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>

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 :

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"