Le site francophone consacré au projet Eclipse et aux outils WebSphere Studio et Rational d'IBM
 

Version pour impression

Documentation du plugin Tomcat pour Eclipse

 

Pré-requis
Installation du plugin
Configuration
Les projets Tomcat

- Créer un projet Tomcat
- Créer et tester une JSP
- Créer et tester un servlet
- Deboguer un servlet
- Déboguer une JSP
Paramétrages avancés
- Paramètres de la JVM
- Paramètres d'un projet
- Actions sur un projet
- Problématique des classloaders


 

Pré-requis

1 - Installer Eclipse 2 (voir article 'Installation d'Eclipse', http://www.eclipsetotale.com/articles/installation.html)

  • dans la suite, les captures d'écrans et les références au menu Eclipse sont faites sur une version française.

 

2 - Installer Tomcat : (C'est un choix délibéré de ne pas fournir Tomcat avec le plugin)

 

 

Installation du plugin

1 - Télécharger le fichier tomcatPluginVx.zip (http://www.sysdeo.com/eclipse/tomcatpluginfr)

2 - Dézipper le fichier dans le répertoire <eclipse>/plugins (le plugin ne sera visible qu'au redémarrage d'Eclipse)

3 - Vérifier que le plugin est chargé : menu Aide, A propos de Plateforme Eclipse, Détail des plug-ins :

4 - Pour ajouter le menu Tomcat et les boutons Tomcat () à une perspective (Java, déboguage ou autre),
utiliser le menu Fenêtre, Personnaliser la perspective..., Autre et cocher Tomcat

Résultat :

 

 

Configurer le plugin

 

1 - Ouvrir la page de préférences du plugin : menu Fenêtre, Préférences, Tomcat

 

2 - Indiquer obligatoirement la version de Tomcat ciblé et le répertoire d'installation de Tomcat
(Le chemin vers le fichier de configuration est calculé pour une configuration classique de Tomcat)

 

3 - Les autres options ('Ajouter des projets Java au classpath Tomcat', 'Ne pas exécuter Tomcat en mode debug' et celles dans la fenètre de préférences 'Paramétrages de la JVM' n'ont pas besoin d'être modifiées pour une configuration classique). Leurs descriptions se trouvent dans la section 'Paramétrages avancés'.
NB : Dans la section 'Ajouter des projets Java au classpath Tomcat' ne pas cocher les cases correspondant à des projets Tomcat. Cette liste permet d'ajouter au classpath de Tomcat des projets Java contenant des classes appelées à partir de projets Tomcat (cf section sur les classloader)

 

4 - Le plugin démarre Tomcat avec le 'JRE par défaut' d'Eclipse (Menu Fenêtre, Préférences, Java, JRE installés, cocher un JRE ou JDK)
NB 1 : ce JRE doit pointer vers un JDK (Tomcat à besoin du compilateur javac pour les JSP). L'utilisation d'un JRE se traduit par le message d'erreur ClassNotFoundException sur la classe javac/Main lors de l'appel à une JSP.

NB2 : si un autre JRE est indiqué dans les préférence Tomcat (paramétrages de la JVM), c'est ce dernier qui est utilisé et non plus celui par défaut. Si ce champs est renseigné toute modification ultérieure du JRE par défaut ne sera pas prise en compte.

 

5 - Tester l'intéraction entre le plugin et Tomcat

  • Utiliser le bouton pour démarrer Tomcat.
  • La perspective 'Débogage' apparaît, le process Tomcat est dans la vue 'Débogage' et la console affiche le message de démarrage de Tomcat (dépend de la version de Tomcat)


  • Tester le serveur Tomcat : http://localhost:8080/ renvoie la page par défaut de Tomcat
  • Arrêter le serveur avec le bouton , la console affiche :

 

 

 

Les projets Tomcat

Le plugin ajoute un nouveau type de projet Java : les projets Tomcat. Un projet Tomcat est un type particulier de projet Java dont le chemin de compilation est initialisé et qui contient une structure WAR, il peut aussi être automatiquement déclaré dans le fichier de configuration de Tomcat et exporté vers un fichier WAR.

 

1 - Créer un projet Tomcat

  • Ouvrir l'assistant de création de projets : menu Fichier, Nouveau, Projet...
  • Sélectionner le type 'Projet Tomcat' :


  • La première page de l'assistant est identique à celle des projets Java


  • La deuxième page est spécifique aux projets Tomcat


  • Le 'nom du contexte' n'est pas forcément identique au nom du projet il sera utilisé pour accéder aux servlets et JSP du projet
  • La case à cocher 'Autoriser la mise à jour du fichier server.xml' indiquera au plugin qu'il peut ajouter ce projet au fichier de configuration de Tomcat (Le plus simple est de cocher cette case)
  • Le 'Sous-répertoire racine de l'application web' fait partie des paramétrages avancés, sa valeur par défaut (/) indique que la structure du projet est celle d'un WAR.

NB : Tomcat lit le fichier server.xml lors de son démarrage, il est donc nécessaire d'arrêter et de redémarrer Tomcat pour qu'un nouveau projet soit pris en compte

 

2 - Créer et tester une JSP

  • Créer un fichier test.jsp à la racine du projet : Menu Fichier, Nouveau, Fichier


  • Editer le fichier


  • Tester la page 'test.jsp' en invoquant l'url :
    http://localhost:8080/MonPremierProjetTomcat/test.jsp

 

3 - Créer et tester un servlet

  • Dans le répertoire WEB-INF/src créer un package 'com.maboite.monpackage'
  • Dans ce package créer la classe TestServlet


  • Tester le servlet en invoquant l'url :
    http://localhost:8080/MonPremierProjetTomcat/servlet/com.maboite.monpackage.TestServlet

  • NB1 : si vous utilisez Tomcat 4.1.12, il faut modifier le fichier <%TOMCAT_HOME%>/conf/web.xml en décommentant la section suivante :
      <!-- The mapping for the invoker servlet -->
    A supprimer <!--  
      <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
      </servlet-mapping>
    A supprimer -->  

  • NB2 : le plugin ne crée pas de fichier WEB-INF/web.xml donc par défaut le fichier <%TOMCAT_HOME%>/conf/web.xml est utilisé.
    De façon générale, le développeur préférera créer son propre fichier web.xml, notamment pour définir ses propres alias de servlets.

 

4 - Deboguer un servlet

  • Le débogage de servlet se fait simplement comme pour toute classe Java : il suffit de mettre un point d'arrêt dans l'éditeur

 

5 - Déboguer une JSP

  • Le plugin ne permet pas de mettre un point d'arrêt directement dans le code de la JSP, par contre il est possible de mettre un point d'arrêt dans le servlet généré.
  • Après avoir invoqué la JSP, sélectionner le répertoire 'work' et faire un 'Régénérer' dans le menu contextuel.
  • La classe du servlet généré par Tomcat pour chaque JSP sera affichée dans Eclipse, il est possible d'y mettre des points d'arrêt :


  • NB 1 : Problème connu avec Tomcat 4 et les JSP placées dans des sous-répertoires :
    Les servlets générés par Tomcat 4 ne sont pas compilable directement par Eclipse. Le problème vient du fait que Tomcat 4 déclare tous les servlets générés dans le package suivant 'org.apache.jsp', or les fichiers créés ne sont pas placés dans un répertoire respectant cette définition de package. Nous proposons une solution sous forme d'un patch Tomcat. Télécharger le patch correspondant à votre version de Tomcat à partir de la page du plugin : http://www.sysdeo.com/eclipse/tomcatPluginFR.html#tcp
    (Il est nécessaire de relancer Tomcat après l'installation de ce patch)
  • NB 2 : par défaut Tomcat ne compile pas les servlets générés avec les informations de debug suffisantes, de ce fait plusieurs fonctionnalités ne sont pas disponibles dans le débogueur (par exemple les variables locales n'apparaissent pas). La correction de ce problème est simple : il faut préciser à Tomcat que la compilation doit se faire en intégrant les informations de débug. Pour cela il faut modifier le fichier conf/web.xml de Tomcat (ou le fichier web.xml de votre projet). La modification se fait sur la déclaration du compilateur de JSP en y ajoutant le paramètre classdebuginfo :

    <servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
    <param-name>logVerbosityLevel</param-name>
    <param-value>WARNING</param-value>
    </init-param>
    <init-param>
    <param-name>classdebuginfo</param-name>
    <param-value>true</param-value>
    </init-param>

    <load-on-startup>3</load-on-startup>
    </servlet>

 

 

Paramétrages avancés

 

1 - Paramètres de la JVM

La fenêtre de préférence Tomcat->Paramétrages de la JVM permet de modifier indirectement la ligne de commande utilisée pour lancer Tomcat. Le plugin se charge de produire cette ligne de commande notamment en construisant le classpath nécessaire. Dans cette fenêtre de préférence il est possible :

  • de spécifier la JVM à utiliser (1) : si une valeur est indiquée dans ce champs, le JRE par défaut ne sera plus utilisé.
  • d'ajouter des paramètres à la ligne de commande (2) : les chaînes de caractères de cette liste seront ajoutées sans transformation à la ligne de commande.
  • d'ajouter des librairies au classpath (3) : ces librairies sont ajoutées en début de classpath donc avant les librairie Tomcat. Il possible de les ordonnancer.
  • de forcer le bootclasspath (4) : si cette liste est renseignée elle remplace le bootclasspath par défaut c'est pourquoi il est nécessaire qu'elle contienne au moins rt.jar.



NB : dans la fenêtre de préférence pincipale du plugin Tomcat il est possible d'indiquer que le démarrage de Tomcat ne doit pas se faire en mode débug.

 

 

2 - Paramètres d'un projet

Les projets Tomcat ont des paramètres spécifiques qui peuvent pour certains être renseignés lors de la création du projet (dans la deuxième page de l'assistant)

Ces paramètres ainsi que plusieurs autres sont accessibles à tout moment en ouvrant la fenêtre de propriété du projet.

1- La case à cocher 'Est un projet Tomcat' permet de transformer un projet Java en projet Tomcat et vice-versa.
2- Le nom du contexte conditionne l'url à utiliser pour accéder au servlet et JSP du projet. La case à cocher associée permet d'autoriser le plugin à modifier le fichier de configuration de Tomcat (server.xml) en y ajoutant le contexte spécifié. Il est conseillé d'autoriser cette modification car le contexte sera déclaré et paramétré automatiquement.
3- Sélectionner un emplacement et un nom de fichier WAR dans lequel sera exporté le contenu du projet lors de l'utilisation de l'option d'export (liste des actions sur un projet, cf ci-dessous).
4- Ce champs permet d'indiquer que le projet n'est pas directement une application web (structure WAR) mais qu'un de ces répertoires contient une application web, le contexte sera défini dans le fichier server.xml en pointant vers ce sous-répertoire.

 

 

3 - Actions sur un projet

Les projets Tomcat ont une entrée supplémentaire dans leur menu contextuel :

1- Le contenu du projet est exporté vers le fichier WAR indiqué dans les préférences.
2- Supprime le contexte de server.xml si la mise à jour du fichier server.xml est autorisé.
3- Met à jour le contexte dans server.xml si la mise à jour du fichier server.xml est autorisé.
4- Lors de la création du projet Tomcat deux librairies contenues dans le répertoire Tomcat sont déclarées dans le chemin de compilation du projet, cette option de menu permet de les redéclarer (ceci peut être intéressant en cas de changement de version de Tomcat, en effet les développeurs de Tomcat ont la facheuses habitudes de déplacer les librairies d'une version à l'autre, avant d'utiliser cette option il est conseillé de supprimer les anciennes librairies du chemin de compilation du projet).

 

 

4 - Problématique des classloaders

Le plugin Tomcat lance Tomcat de façon classique, le fonctionnement de base des classloaders est donc identique. Pour chaque application les classes de l'application sont chargées par un classloader spécifique.Ce classloader cherche les classes soit sous forme de fichiers .class dans l'arborescence WEB-INF/classes, soit sous forme de fichiers .jar dans le répertoire WEB-INF/lib.

Le plugin configure automatiquement le chemin de compilation des projets Tomcat pour que tous les fichiers .java du projet soient compilés dans le répertoire WEB-INF/classes. Il est naturellement fréquent que le code de ces classes fassent appel à des classes externes. Ces classes doivent être à la fois visible lors de la compilation et lors de l'exécution, pour ce faire il existe différents paramétrages :

 

Les classes utilisées sont dans un fichier jar :

- copier le fichier jar dans le répertoire WEB-INF/lib et ajouter ce fichier jar au chemin de compilation du projet.
- pour des besoins plus particuliers le fichier.jar peut-être ajouté au classpath ou au bootclasspath de Tomcat (fenêtre préférence->Tomcat->paramétrage de le JVM). Il peut aussi être placé dans le répertoire common/lib de Tomcat. A noter que dans tous ces cas les classes du fichier jar ne seront pas chargées par le classloader de l'application Web ce qui posera problème que si ces classes invoquent les classes de l'application (par exemple en utilisant l'instruction Class.forName). Pour la compilation le fichier jar doit être ajouté au chemin de compilation du projet.

 

Les classes utilisées sont sous la forme de fichiers .class :

- créer un fichier jar et suivre les instructions précédentes ;-)
- ne pas copier les classes dans le répertoire WEB-INF/classes du projet Tomcat. Ce répertoire étant paramétré comme répertoire de destination des classes compilées du projet, il est régulièrement effacé par Eclipse.

 

Les classes utilisées sont sous la forme de fichiers .java contenu dans un projet Eclipse de type projet Java :

Pour la compilation ajouter le projet Java au chemin de compilation du projet Tomcat.

Pour l'exécution :

- 1ère solution : cocher le projet dans la page préférence du plugin Tomcat.
Cette solution n'est pas complètement satisfaisante car les classes de ce projet seront ajoutées au classpath global de Tomcat, elles ne seront donc pas chargées au même niveau de classloader que les classes de l'application. Ce qui implique d'une part que les classes du projet Java ne pourront pas appeler les classes de l'application (problème avec Class.forName par exemple) et d'autre part que ces classes ne seront pas rechargées automatiquement par Tomcat si elles sont modifiées (Tomcat est capable de recharger automatiquement toutes les classes chargées par le classloader de l'application).
Si le JDK 1.4 est utilisé, le problème de rechargement est partiellement géré par Eclipse qui sera capable de demander le rechargement des méthodes modifiées, mais tout ajout de méthode dans une des classes du projet Java nécessitera l'arrêt et le redémarrage de Tomcat.

- 2ème solution : utiliser une version étendue du classloader Tomcat. Le plugin intègre un classloader capable de charger les classes d'une application Web non seulement à partir de WEB-INF/classes et WEB-INF/lib mais aussi à partir de tout répertoire ou fichier jar extérieur. Ce classloader est nommé DevLoader.
Pour l'installer : dézipper le fichier DevLoader.zip dans le répertoire <%Tomcat%>/server/classes.
Pour l'utiliser : vérifier que le projet Java est dans le chemin de compilation du projet Tomcat :

dans la section Tomcat des propriétés du projet, activer le DevLoader pour ce projet et sélectionner les répertoires correspondant au projet Java:

 

 

 

 

Version pour impression



 

 

(c) EclipseTotale - Bruno Leroux - contact(arobase)eclipsetotale.com

 

 

Mots-clés

Articles et tutoriaux


Téléchargements