Tomcat

Les serveurs jee se divisent en 2 grandes familles :

Nous allons nous intéresser uniquement aux conteneurs de servlets : Il sont suffisants pour notre besoin.

Tomcat

Nous allons utiliser le serveur de la fondation apache : tomcat.

On commence par télécharger la dernière version 7.0.x de tomcat

On décompresse l'archive et on copie le répertoire apache-tomcat-7.0.xx dans son home directory.

On peut dès à présent lancer le serveur

$ cd ~/apache-tomcat-7.0.xx
$ ./bin/startup.sh
Using CATALINA_BASE:   "/home/user/apache-tomcat-7.0.xx"
Using CATALINA_HOME:   "/home/user/apache-tomcat-7.0.xx"
Using CATALINA_TMPDIR: "/home/user/apache-tomcat-7.0.xx/temp"
Using JRE_HOME:        "/path/to/java/jdk1.7.0_17"
Using CLASSPATH:       /home/user/apache-tomcat-7.0.xx/bin/bootstrap.jar"

Et aller sur la page http://localhost:8080/

C'est la page d'accueil de tomcat. Il y quelques liens et exemples accessibles depuis celle-ci.

En pratique, on y va jamais, mais au moins, on sait que tomcat est bien installé.

Les répertoires de tomcat

Voici les répertoires à la racine de tomcat :

$ cd ~/apache-tomcat-7.0.xx
$ ls
d----        16/06/2011     21:27            bin            les exécutables
d----        16/06/2011     21:30            conf           la configuration de tomcat et des applications
d----        16/06/2011     21:27            lib            les librairies (.jar)
d----        16/06/2011     21:30            logs           les logs du serveur
d----        16/06/2011     21:27            temp           répertoire de travail pour les applications
d----        16/06/2011     21:28            webapps        les applications
d----        16/06/2011     21:30            work           répertoire de travail de tomcat
-a---        16/06/2011     21:26      38657 LICENSE
-a---        16/06/2011     21:26        574 NOTICE
-a---        16/06/2011     21:26       8672 RELEASE-NOTES
-a---        16/06/2011     21:26       6836 RUNNING.txt

Et la signification des variables d'environnement qui apparaissent au démarrage :

Par défaut, HOME et BASE sont au même endroit.

Une même installation de tomcat peut donc être lancée plusieurs fois sur des ports différents afin de faire tourner différents lots d'applicaitons.

Contrôler tomcat

Le répertoire bin de $CATALINA_HOME contient les script startup.sh et shutdown.sh (*.bat sous windows).

Les applications

Une installation de tomcat vient avec quelques applications de démonstration

$ ls ~/apache-tomcat-7.0.xx/webapps
d----        16/06/2011     21:28            docs
d----        16/06/2011     21:28            examples
d----        16/06/2011     21:28            host-manager
d----        16/06/2011     21:28            manager
d----        16/06/2011     21:28            ROOT

L'application examples est accessible sur http://localhost:8080/examples

L'application ROOT est particulière, c'est celle qui répond à la racine http://localhost:8080/.

Tomcat charge toutes les applications de ce répertoire au démarrage.

Dans ce répertoire, on peut trouver :

Structure d'une application

Simplement, les applications web java sont des archiches (zip) structurées portant l'extension .war.

war layout

La structure interne d'un war est la suivante.

Le répertoire WEB-INF est un répertoire protégé.
Ses fichiers ne sont pas accessibles depuis un navigateur web :

  • classes : les classes java du projet
  • lib : les librairies additionnelles
  • jsp : les fichiers jsp
  • tags : des morceaux de jsp réutilisables
  • tld : des descripteurs de tags et fonctions
  • web.xml : le descripteur de déploiement

A la racine, on trouve les fichiers publiques accessibles depuis un navigateur : fichiers html, css, images...

Cette structure peut paraitre un peu complexe mais, avec maven ou un IDE la construction de l'archive est automatisée.

Sécurité

Certaines de ces applications sont protégées par autentification de type BASIC (popup login / password navigateur quand on tente d'aller sur l'application.)

C'est le cas de l'application manager qui nécessite un utilisateur avec un rôle manager-gui.

Pour des raisons de sécurité, la configuration de base n'en définit aucun.

Le fichier $CATALINA_HOME/conf/tomcat-users.xml permet de rajouter un user.

<user username="admin" password="admin" roles="manager-status"/>

Et on redémarre tomcat et l'utilisateur admin a ainsi accès à http://localhost:8080/manager/status

Pour l'interface d'admin, il faut le rôle manager-gui :

<user username="admin" password="admin" roles="manager-status,manager-gui"/>

Et la page http://localhost:8080/manager/html devient accessible.

Cette page permet d'administrer toutes les applications déployées dans le serveur.

On peut donc installer et désinstaller des applications depuis cette interface.

Le fichier tomcat-users.xml définit un ensemble d'utilisateurs valable pour toutes les applications déployées.

En sécurité, cet ensemble est appelé un realm (domaine).

Le fichier tomcat-user.xml est le fichier de configuration par défaut du Memory Based Realm de tomcat.