Lancement de Tomcat

La distribution par défaut de Tomcat permet de le lancer avec une adaptation minimale de la configuration.

Pour que le lancement se déroule bien, il faut vérifier que la variable JAVA_HOME soit bien positionnée sur une installation du JDK ou du JRE qui correspondent à la version de Java dont Tomcat a besoin (1.6 pour Tomcat 6.0.*). Ensuite, il suffit de se placer dans le répertoire bin, et de taper la commande :

> startup

Une fenêtre s'ouvre alors, qui détaille le déroulement des opérations de lancement, et très rapidement finit par nous afficher le message suivant :

INFO: Server startup in 351 ms

Il suffit alors d'ouvrir un navigateur, et de le faire pointer vers l'URL http://localhost:8080/, on obtient la page d'accueil suivante.

Cette page d'accueil permet d'accéder à l'intégralité de la documentation de Tomcat, en local (cartouche Documentation), aux ressources en ligne sur le site de l'ASF, et à des exemples de servlet ou de JSP.

Le cartouche Administration n'est pas encore accessible : il faut pour cela modifier certains droits d'accès, ce que nous allons faire.

Administrer un serveur Tomcat signifie entre autres pouvoir allumer ou éteindre certaines applications web. Autoriser n'importe quel utilisateur de faire ce genre de choses serait assez dangereux !

C'est la raison pour laquelle cette application d'administration est inaccessible dans la distribution de Tomcat. C'est d'ailleurs ce que nous dit la page d'accueil : l'accès à cette application est réservé aux utilisateurs possédant le rôle manager.

Dans la configuration par défaut, les rôles et les utilisateurs sont définis dans le fichier conf/tomcat-users.xml. Tomcat supporte bien sûr d'autres moyens de définir ce point, il sait entre autres accéder à des bases de données pour aller chercher ce genre d'informations.

Le fichier tomcat-users.xml est vide, et contient des exemples de déclaration de rôles et d'utilisateurs mis en commentaires. Il nous faut créer un rôle manager, et un utilisateur qui possède ce rôle.

Il faut redémarrer Tomcat pour que ce fichier soit pris en compte. L'arrêt de Tomcat se fait en tapant la commande :

> shutdown

Un fois redémarré Tomcat, on peut cliquer sur le lien Status du cartouche d'administration. On obtient alors une page qui ressemble à la page suivante.

On peut également obtenir la liste des applications web actives.

Pour un certain nombre de raisons (bonnes ou mauvaises...), on peut avoir besoin de lancer plusieurs instances de Tomcat en parallèle. Cela est parfaitement possible, à condition de positionner les bonnes variables d'environnement.

La variable CATALINA_HOME doit pointer vers le répertoire d'installation de Tomcat. La valeur de cette variable doit être la même pour tous les contextes de lancement de chaque instance de Tomcat.

Une deuxième variable est utilisée, CATALINA_BASE, qui peut prendre une valeur propre à chaque lancement.

Tomcat utilise plusieurs classloader pour fonctionner. Chaque classloader charge des classes et des JAR tel que défini dans le fichier conf/catalina.properties.

Par défaut, les classloader server et shared sont vides, et Tomcat n'utilise que le classloader common.

Ensuite, Tomcat crée un classloader par application web, ce qui permet de garantir l'étanchéité complète d'une application web à l'autre. Ce classloader charge le contenu de WEB-INF/classes et WEB-INF/lib, tel que défini dans l'API Servlet.

On voit donc qu'il est possible, en jouant sur la variable CATALINA_BASE de définir un jeu de classes commun aux applications web, instance par instance.

Chaque instance de Tomcat peut ensuite gérer son propre environnement : les répertoires conf, work, temp, webapps et logs sont, par défaut, relatifs à CATALINA_BASE, et peuvent être redéfinis par des options dans le fichier de configuration conf/server.xml.