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.
Exemple 2.1. Création d'un rôle manager dans tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?> <tomcat-users> <!-- création du rôle manager --> <role rolename="manager"/> <!-- création d'un utlisateur possédant ce rôle --> <user username="tomcat" password="tomcat" roles="manager"/> </tomcat-users>
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
.
common.loader
: les classes chargées par ce classloader
sont disponibles dans Tomcat et pour toutes les applications web que cette instance prend en
charge.
server.loader
: ces classes sont accessibles au niveau du serveur. Par exemple,
si une connexion JDBC est définie dans le Server
, c'est ce
classloader qui doit charger le pilote JDBC.
shared.loader
: ces classes sont disponibles dans toutes les applications web.
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
.