J'ai suivi les étapes suivantes
J'ai constaté que lorsque j'ai redémarré Tomcat, les fichiers existants dans le dossier qui avait été développé précédemment n'étaient pas mis à jour. La mise à jour du fichier war ne doit-elle pas avoir mis à jour le fichier de classe jsp correspondant?
J'ai regardé la documentation et j'ai trouvé ceci http://Tomcat.Apache.org/Tomcat-5.5-doc/config/Host.html . La citation suivante sous "Déploiement automatique des applications"
En plus du déploiement automatique qui se produit au démarrage, vous pouvez également demander que de nouveaux fichiers de configuration XML, fichiers WAR ou sous-répertoires qui sont déposés dans l'appBase (ou
$ CATALINA_HOME/conf/[engine_name]/[Host_name] dans le cas d'un fichier de configuration XML) tandis que Tomcat est en cours d'exécution sera automatiquement déployé, selon les règles décrites ci-dessus. Le déployeur automatique effectuera également le suivi des applications Web pour les modifications suivantes:
- Une mise à jour du fichier WEB-INF/web.xml déclenchera un rechargement de l'application Web
- Une mise à jour d'une WAR qui a été étendue déclenchera un annulation du déploiement (avec suppression de l'application Web étendue), suivie d'un déploiement
- Une mise à jour d'un fichier de configuration XML déclenchera un annulation du déploiement (sans suppression de tout répertoire étendu), suivie d'un déploiement de l'application Web associée
Les fichiers n'ont-ils pas dû être mis à jour automatiquement en raison du point 2 ci-dessus?
Autodeploy est défini sur true dans server.xml
Historiquement, Tomcat n'a jamais mis à jour le répertoire éclaté lorsque vous venez de déposer un nouveau pot, du moins pour moi. J'ai toujours pensé qu'il s'agissait d'un bug, mais je n'y ai jamais réfléchi car il existe une solution simple. Les deux devraient fonctionner correctement:
Ajoutez autoDeploy = true. Travaille pour moi
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
J'ai généralement défini le déploiement automatique dans server.xml sur false. Cela me permet de supprimer la nouvelle guerre et de redémarrer Tomcat sans avoir à gérer le répertoire correspondant.
Oui, le répertoire éclaté doit être mis à jour, mais vous n'avez pas besoin d'arrêter Tomcat pour que cela fonctionne - cela fonctionnera avec Tomcat en cours d'exécution. Pouvez-vous réessayer sans arrêter Tomcat entre la mise à jour?
J'utilise également l'application Manager intégrée qui me permet de mettre à jour les fichiers de guerre n'importe où dans le domaine sans être root (ou Apache ou quoi que Tomcat s'exécute). C'est très pratique et peut être intégré dans un script Ant.
Comme j'utilise maven pour générer mes builds dans Tomcat à l'intérieur d'une boîte Ubuntu, j'ai un script appelé
install_wars.sh
Avec le contenu suivant:
mvn clean install
service Tomcat7 stop
find /var/lib/Tomcat7/webapps/ -mindepth 1 -maxdepth 1 -type d -exec rm -rf {} \;
find . -name *.war -exec cp {} /var/lib/Tomcat7/webapps/ \;
service Tomcat7 start
Vous souhaiterez peut-être modifier les commandes path et maven en conséquence.
Les arrêts/démarrages Tomcat sont là pour éviter toute fuite de mémoire pouvant ralentir l'application après plusieurs redéploiements.
Dans mon cas, je nomme un artefact
ROOT.WAR
mais devrait être
ROOT.war
À votre santé!