Initier un projet Struts/Tomcat5/Eclipse

Yann Le Thieis - yann.le-thieis@tuxcoffee.net

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.

Table des matières

Introduction
Environnement
Environnement utilisateur de développement
Préparation de l'environnement du plugin Tomcat d'Eclipse
Mise en oeuvre du projet
Vérifications
Mise en garde

Introduction

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.

Environnement

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:

  • Eclipse 3.1: eclipse-SDK-3.1.1-linux-gtk.tar.gz
  • Serveur d'application tomcat 5.0.30, dont les paquets Debian tomcat5, tomcat5-admin, tomcat5-webapps.
  • plugin tomcat sysdeo pour Eclipse installé (tomcatPluginV31beta.zip).
  • archive des binaires Struts (struts-1.2.8-bin.tar.gz).

Environnement utilisateur de développement

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.

Préparation de l'environnement du plugin Tomcat d'Eclipse

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:

init_projet_ste.eclipse_tomcat_conf
Figure 1: Configuration de Tomcat dans Eclipse

Les éléments à configurer sont les suivants:

  • Version 5.x
  • Répertoire de Tomcat: /usr/share/tomcat5
  • Déclarations des contextes: un fichier par contexte
  • Répertoire des contextes: /usr/share/tomcat5/conf/catalina/localhost (d'ailleurs je fais ici une petite entorse à mon choix de ne pas intervenir sur les droits puisque je met le répertoire localhost avec les droits 777)
  • Application 'Tomcat Manager': il faut modifier l'url puisque sous Debian le port par défaut de l'accès à Tomcat est 8180 au lieu de 8080 (http://localhost:8180/manager)
  • Paramètres avancés, Tomcat Base: /var/lib/tomcat5

Cela nous suffit.

Mise en oeuvre du projet

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).

init_projet_ste.deploiement_mon_appli
Figure 2: Visualisation du déploiement de mon_appli sur Tomcat manager

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.

init_projet_ste.creation_projet
Figure 3: Création du projet sur Eclipse

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.

Vérifications

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):

init_projet_ste.vue_java_eclipse
Figure 4: Vue du projet sur Eclipse

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:

init_projet_ste.application_manager
Figure 5: Vue du gestionnaire d'application

cqfd ;)

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

Mise en garde

Faire attention aux JAVA policies qui en fonction des besoins du projet (s'ils concernent par exemple des autorisations sur des fichiers) ne seront pas les mêmes sur la station de développement et sur le serveur d'application cible.

Dernière mise à jour :  2005-12-31 - Copyright (c) 2005 - 2006 Yann Le Thieis.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".