
Développer une application web en java dans un projet sous Eclipse et que toute modification dans celui-ci se trouve immédiatement prise en compte sur les pages web du site desservit par Tomcat c'est l'objectif de cet article.
Développer une application web en java dans un projet sous Eclipse et que toute modification dans celui-ci se trouve immédiatement prise en compte sur les pages web du site desservit par Tomcat c'est l'objectif de cet article.
Pour illustrer la manipulation à réaliser pour atteindre ce but, nous allons initier un projet de développement d'une application web en JAVA avec le framework Struts comme un projet Eclipse et prit en compte directement par le serveur Tomcat.
Certaines manipulations ne sont bien sûr pas conseillées (au niveau de la sécurité) sur une machine serveur d'application en production ou en intégration. Nous nous plaçons dans une configuration d'un poste de développement et la principale motivation est le confort du développeur ainsi que son efficacité. De plus il n'y a aucune influence au niveau de la sécurité sur l'application qui sera déployée ensuite sur le serveur d'intégration puis sur un serveur en production.
La machine qui me sert pour mettre en pratique et vous commentez la procédure est sous Debian Etch GNU/Linux. Le fichier des sources de paquetages /etc/apt/sources.list est le suivant (partiel):
# Mises à jour de sécurité deb http://security.debian.org/ testing/updates main # Miroir Debian deb http://ftp.fr.debian.org/debian testing main contrib non-free deb-src http://ftp.fr.debian.org/debian testing main contrib non-free # Ajouts deb http://ftp.oleane.net/pub/java-linux/debian testing non-free deb-src http://mentors.debian.net/debian unstable main contrib non-free
Les éléments installés qui nous intéressent ici, sont:
Pour pouvoir prendre en compte automatiquement un projet JAVA/Tomcat de Eclipse directement dans le serveur d'application (de servlets), les développements se font sous le compte utilisateur Tomcat5 (cela évite des manipulations douteuses sur les droits associés aux fichiers et répertoires, etc).
Lorsque les paquets Debian pour Tomcat5 sont installés, un utilisateur tomcat5 est créé par la même occasion. Pour des questions de sécurité ce compte ne possède pas de shell de login et par conséquent on ne peut se connecter sous ce user-id. Nous sommes sur une machine de développement, nous n'avons pas à ce niveau à nous embarrasser de questions de sécurité de cet ordre et voir le serveur tomcat comme une application que nous pouvons lancer à loisirs (c'est ce que je fais d'ailleurs sur ma machine, Tomcat n'est pas un service permanent).
Nous allons donner un shell à cet utilisateur tomcat5 en modifiant la ligne suivante de /etc/passwd de:
tomcat5:x:116:65534::/usr/share/tomcat5:/bin/false
à
tomcat5:x:116:65534::/home/tomcat5:/bin/bash
Il nous reste, toujours en tant que administrateur du système à lui donner un mot de passe et nous avons un utilisateur tomcat5 presque normal.
Sur le compte utilisateur tomcat5 lancez Eclipse. Nous allons configurer l'environnement Tomcat de cet IDE par défaut.
Allez au menu Fenêtre/Préférences Puis dans l'arborescence du menu de configuration sur la branche Tomcat comme illustrée ci-après:

Les éléments à configurer sont les suivants:
Cela nous suffit.
Dans l'archive struts-1.2.8-bin.tar.gz, récupérer l'archive de déploiement struts-blank.war, la renommer en mon_appli.war et la placer pour déploiement dans le répertoire webapps de Tomcat.
yann@berder:webapp$ ls struts-1.2.8-bin struts-1.2.8-bin.tar.gz yann@berder:webapp$ ls struts-blank.war struts-examples.war tiles-documentation.war struts-documentation.war struts-mailreader.war yann@berder:webapps$ sudo cp struts-blank.war \ /usr/share/tomcat5/webapps/mon_appli.war yann@berder:webapps$
Tomcat va prendre en compte cette archive war tout de suite (éventuellement après un redémarrage de celui-ci, cela dépend de votre configuration de Tomcat). Pour le voir, il suffit d'aller sur l'"application manager" de Tomcat (à l'adresse http://localhost:8180/manager/html) comme visualisé sur l'image suivante (le déploiement et la configuration de Tomcat n'est pas l'objet de cet article).

La nouvelle structure de mon_appli va être déployée sous le répertoire webapps de Tomcat comme suit:
mon_appli
|-- META-INF
| `-- MANIFEST.MF
|-- WEB-INF
| |-- classes
| | `-- MessageResources.properties
| |-- lib
| | |-- antlr.jar
| | |-- commons-beanutils.jar
| | |-- commons-digester.jar
| | |-- commons-fileupload.jar
| | |-- commons-logging.jar
| | |-- commons-validator.jar
| | |-- jakarta-oro.jar
| | `-- struts.jar
| |-- src
| | |-- README.txt
| | |-- build.xml
| | `-- java
| | `-- MessageResources.properties
| |-- struts-bean.tld
| |-- struts-config.xml
| |-- struts-html.tld
| |-- struts-logic.tld
| |-- struts-nested.tld
| |-- struts-tiles.tld
| |-- tiles-defs.xml
| |-- validation.xml
| |-- validator-rules.xml
| `-- web.xml
|-- index.jsp
`-- pages
`-- Welcome.jsp
Identifiez-vous sur le compte tomcat5 et recopiez l'arborescence de mon_appli dans l'espace de travail (workspace) de Eclipse.
tomcat5@berder:workspace$ pwd /home/tomcat5/workspace tomcat5@berder:workspace$ cp -r /usr/share/tomcat5/webapps/mon_appli .
Supprimer le répertoire mon_appli et l'archive mon_appli.war dans le répertoire webapps de Tomcat.
root@berder:webapps# pwd /usr/share/tomcat5/webapps root@berder:webapps# rm -rf mon_appli*
Démarrer Eclipse en tant que utilisateur tomcat5 (si ce n'est déjà fait) et prendre en compte le même espace de travail où vous avez placé l'arborescence mon_appli.
Créez un nouveau projet Java portant le nom mon_appli.

puis cliquez sur la touche "suivant" et vérifiez que vous avez bien distinction des sources et des binaires (i.e. src et bin ou bien src et classes). Vous pouvez ensuite cliquer sur le bouton "Terminer".
Après la création du projet java sous eclipse revenir sur les propriétés du projet pour en faire un projet Tomcat. Le contexte dans /var/lib/tomcat5/conf/Catalina/localhost/mon_appli.xml sera créé automatiquement pour tomcat par Eclipse!!!!
Ça y est! vous avez initier un projet avec le framework Struts sous Eclipse et tout ce que vous écrivez dans Eclipse pour ce projet sera automatiquement compilé (cela dépend un peu de votre configuration Eclipse) et pris en compte par le serveur d'application Tomcat.
Avec la création du projet du chapitre précédent vous devriez obtenir une vue comme ceci pour le projet mon_appli sous Eclipse (Vue Java):

Et justement, dans ce que vous pouvez voir sur la capture d'écran ci-dessus, j'ai édité le descripteur web.xml de mon application. Nous allons nous en servir pour vérifier que toute modification du projet sur Eclipse va se répercuter au niveau web sous Tomcat.
Dans ce fichier vous avez une ligne qui correspond au nom d'affichage de l'application mon_appli que vous avez pu visualiser au niveau de l'"application manager" de Tomcat, c'est la ligne suivante:
<display-name>Struts Blank Application</display-name>
Ce qui correspond bien au niveau du tableau que gère Tomcat à :
Chemin: /mon_appli
Nom d'affichage: Struts Blank Application
Dans le fichier web.xml changez cette ligne par
<display-name>Mon application struts ;)</display-name>
Sauvegardez web.xml.
Ensuite rechargez la page de votre navigateur qui pointe sur l'"application manager" de Tomcat et vous obtenez:

cqfd ;)
Maintenant que vous avez un environnement de développement plutôt réactif, il ne vous reste plus qu'à vous exprimer!