web-dev-qa-db-fra.com

Comment purger le cache de Tomcat lors du déploiement d'un nouveau fichier .war? Y a-t-il un paramètre de configuration?

J'ai un simple bonjour, une application de servlet mondiale avec laquelle je ne fais que jouer, et le transmettant à mon serveur Tomcat sur un serveur virtuel.

Lorsque je modifie mon code et que je le déploie, Tomcat ne diffuse pas le code nouvellement publié (même après le redémarrage du service).

J'arrête le service, puis pousse le nouveau fichier war vers/webapps/et je m'assure également de supprimer l'ancien dossier éclaté.

Lorsque je redémarre le serveur, il sert toujours l'ancienne base de code.

Existe-t-il un paramètre dans la configuration pour mettre fin à ce comportement?

Aussi, quels dossiers devrais-je supprimer? S'il vous plaît soyez spécifique (dossiers et chemins) car j'ai essayé d'en supprimer et je n'ai rien eu. 

32
Blankman

Vous pouvez supprimer le répertoire "travail".

Êtes-vous sûr que ce n'est pas un problème de mise en cache du navigateur?

15
Dave Newton

J'ajouterais qu'en cas de comportement vraiment étrange - où vous passez quelques heures à dire WTF - essayez de supprimer manuellement le répertoire /webapps/yourwebapp/WEB-INF/classes. Le fichier source compilé d'un fichier source Java déplacé vers un autre package ne sera pas supprimé, du moins dans le cas d'une application Web éclatée sur TC. Cela peut sérieusement vous rendre fou avec un comportement imprévisible, en particulier avec une servlet annotée.

4
Hal50000

J'ai rencontré un comportement étrange qui ne reflétait pas la base de code réelle. Après un certain temps en essayant plusieurs solutions, mon problème a été résolu en supprimant manuellement tous les éléments sous /var/cache/Tomcat8/

2
pkaramol

Un peu tard pour la fête, voici comment je le fais

  1. Annuler le déploiement de l'application auprès du gestionnaire
  2. Arrêter Tomcat en utilisant ./shutdown.sh
  3. Supprimer le cache du navigateur
  4. Supprimer l'application de webapps et de /work/Catalina/...
  5. Démarrage de Tomcat à l'aide de ./startup.sh
  6. Copiez la nouvelle version de l'application dans /webapps et démarrez-la.
2
svarog

Semble un problème d'horodatage. Selon la documentation de Tomcat, s'il existe un nouveau jsp ou servlet, un nouveau fichier _Java sera créé dans le dossier de travail, sauf si les fichiers _Java.class sont plus récents que le jsp ou les servlets.

1
Apocalypse Araneta

Tomcat crée également un répertoire ROOT au même niveau que work/. ROOT/ met également en cache les anciennes données. supprimez ROOT avec le répertoire Catalina dans work.

1
Amit

Je suis nouveau chez Tomcat, et ce problème me rendait dingue aujourd'hui. C'était sporadique. J'ai demandé à un collègue de m'aider, et la guerre s'est étendue et a été supposée l'être. 3 déploie plus tard ce jour-là, il est revenu à la version originale.

Dans mon cas, MySite.WAR a été étendu à ROOTETMySite. MySite était généralement servi. Mais parfois, Tomcat a décidé qu’il préférait le modèle ROOT et tous mes changements ont disparu.

La "solution" consiste à supprimer le site Web ROOT à chaque déploiement de la guerre.

1
GeekyMonkey

J'ai du mal à mettre mon fichier war à /etc/Tomcat7/webapps mais le vrai chemin était /var/lib/Tomcat7/webapps. Voulez-vous utiliser Sudo find / -type f -name "my-war-file.war" pour savoir où il se trouve?.

Et supprimez ces dossiers /tmp/hsperfdata_* et /tmp/Tomcat7-Tomcat7-tmp.

0
Ratata Tata

On dirait que votre chargeur de classes ne charge pas les classes de servlet une fois mises à jour. Cela peut être corrigé si vous modifiez votre fichier web.xml, ce qui devrait inviter le serveur/conteneur à redéployer et à recharger les classes de servlet. J'imagine que vous devez ajouter une ligne vide à la fin de votre fichier web.xml et enregistrez-le pour voir si cela résout le problème. Comme je l'ai dit, cela pourrait résoudre le problème ou non.

Bonne chance!

0
Mechkov

J'ai eu le même problème deux fois, mais la deuxième fois, j'ai réalisé que ce n'était pas du tout un problème sur Tomcat. Essayez de supprimer le cache de votre navigateur, actualisez la page et voyez si la nouvelle version de la page sur votre serveur est montré. Cela a fonctionné avec moi.

0
Magno Nascimento