2009-04-24 7 views
9

J'avais l'habitude d'exécuter Tomcat séparément sur ma machine. J'avais un script Ant qui reconstruisait mon projet, le déployait localement et redémarra Tomcat. Tout a bien fonctionné, mais je n'ai pas pu déboguer l'application Web dans Eclipse. J'ai donc appris comment installer Tomcat à l'intérieur d'Eclipse et faire fonctionner mon application Web. Maintenant, le problème est que je ne comprends pas complètement comment le gérer de cette façon. Eclipse est configuré pour générer automatiquement mon projet sur les modifications, mais ces modifications ne semblent pas toujours refléter dans l'application Web. Parfois, je dois construire manuellement le projet et "nettoyer" manuellement le serveur pour que les changements soient reflétés.Comment gérer correctement les applications Web Tomcat dans Eclipse?

Existe-t-il des règles sur la façon de gérer cette configuration? Par exemple, si je change seulement une JSP, sera-t-elle automatiquement synchronisée? Si je change une classe de servlet, alors je dois reconstruire manuellement le projet? Ces règles sont-elles cohérentes ou dois-je simplement les reconstruire et les nettoyer manuellement à chaque fois?

J'apprécierais vraiment que quelqu'un puisse me donner les règles de bonne pratique ou me diriger vers une bonne ressource pour apprendre à gérer cet environnement.

PS. J'utilise Eclipse 3.4.1 Java EE package et Tomcat v5.5

Répondre

5

Vous pouvez utiliser Eclipse et Tomcat de la manière indiquée. D'abord les rudiments de la façon de le mettre en place:

  1. Dans la vue Serveurs configurer un nouveau serveur Tomcat pointant vers votre TOMCAT_HOME
  2. Assurez-vous que votre projet est un « projet web » Eclipse. Vous devrez peut-être créer un fichier fictif et copier certains fichiers dans .settings (regardez les fichiers wst).
  3. Déployez votre projet sur Tomcat en cliquant avec le bouton droit de la souris sur le serveur dans la vue Serveurs et sur «Ajouter et supprimer des projets ...» pour ajouter votre projet au serveur.

Vous pouvez exécuter votre serveur et le tester comme si vous utilisiez Tomcat en dehors d'Eclipse. Si vous exécutez le serveur en mode Débogage, vous pouvez définir des points d'arrêt et parcourir le code. Quand vous aurez besoin de redémarrer le serveur, Eclipse est généralement assez bon pour le déploiement automatique des modifications. Vous n'aurez pratiquement jamais besoin de redémarrer pour modifier les pages JSP. Si vous modifiez une classe, elle déploiera automatiquement la modification (généralement) si vous modifiez le corps d'une méthode. Si vous changez la signature d'une classe (ajoutez ou supprimez une méthode ou changez d'argument pour cela) vous devrez presque toujours redémarrer. Toute modification apportée aux fichiers de configuration (web.xml ou similaire) nécessitera presque toujours un redémarrage.Pour redémarrer, il suffit de cliquer sur le bouton "Déboguer" ou "Exécuter" dans la vue Serveur. Toutes vos modifications seront redéployées dans Tomcat. Une chose à surveiller est que dans la configuration par défaut votre répertoire "webapp" dans TOMCAT_HOME ne sera pas utilisé. Au lieu de cela, il utilisera un dossier sous votre répertoire d'espace de travail Eclipse (WORKSPACE/.metadata/.plugins/org.eclipse.wst.server.core/tmp0).

0

Normalement, vous devriez republier l'application pour obtenir les dernières modifications, n'oubliez pas de synchroniser d'abord avec le système de fichiers au cas où vos fichiers seraient modifiés de façon extrinsèque. Vous pouvez spécifier que votre application est automatiquement rechargée lorsqu'elle est modifiée. Recherchez l'attribut Auto-reload dans server.xml de votre projet de configuration de serveur. Lorsqu'il est défini sur true, tomcat rechargera automatiquement votre application. Ce n'est pas toujours une bonne idée en passant. Les JSP modifiées devraient fonctionner automatiquement, pas besoin de redémarrer l'applciation.

0

Si vous modifiez la structure d'une classe qui a déjà été chargée et utilisée (ajouter/supprimer des membres, modifier la signature de méthode, etc.), les modifications de votre code ne seront pas répercutées. Ce n'est pas un problème d'éclipse mais un problème de JVM. Si vous effectuez des modifications de code simples, comme des modifications logiques dans une méthode existante, vos modifications entreront en vigueur après la compilation et le redéploiement de la classe. Quoi qu'il en soit, si vous modifiez une constante publique, vous devez reconstruire votre ou vos projets.

0

J'ai trouvé deux choses importantes à comprendre:

  • Eclipse ne se rend pas automatiquement si les fichiers ont été modifiés en dehors d'Eclipse. cliquer sur Actualiser sur un projet fait cela, tout comme F5. Vous pouvez également modifier un paramètre pour actualiser automatiquement, qui, cependant, ne détecte pas les changements instantanément (mon intuition dit jusqu'à 10 secondes de retard)

  • Travailler avec des serveurs a le concept de "publier" des fichiers sur Tomcat. Cela se produit normalement automatiquement dans une seconde après tout changement. La modification de nombreuses classes peut provoquer de nombreux rechargements de serveur, ce qui peut être un frein si un rechargement de contexte prend du temps (comme le font certainement les applications Spring complexes). J'ai donc modifié un paramètre pour ne pas publier automatiquement (double-cliquez sur Instance de serveur)

Questions connexes