71 votes

Comment empêcher le verrouillage des fichiers lors du déploiement d'une application Web Tomcat ?

J'utilise l'application manager dans tomcat 7, et je suis incapable de redéployer complètement une application.

Il est dit FAIL - Unable to delete [F:\apache-tomcat-7.0.33\webapps\balaji]. The continued presence of this file may cause problems.

J'ai lu quelque part que c'est dû à un phénomène appelé fuite de mémoire, et que si nous le corrigeons, le problème sera résolu.

Quelqu'un peut-il me dire ce qu'est cette fuite de mémoire dans Tomcat 7, et comment la réparer ? J'utilise le système d'exploitation Windows 7. Si je suis capable de le corriger, mon processus de dé-déploiement et de redéploiement se déroulera-t-il sans problème ?

0 votes

Puisque je suis venu à cette question avec un problème similaire. Mais ce que j'ai découvert, c'est que nous lisions certains fichiers sans les fermer et qu'ils n'étaient donc pas supprimés lors du redéploiement. Donc, plutôt que d'essayer d'autres solutions, jetez un coup d'œil au code et voyez comment vous utilisez les fichiers qui ne sont pas supprimés.

128voto

mvlupan Points 727

Ce problème est très courant dans l'environnement Windows, mais il existe une solution via le programme de gestion de l'environnement. antiResourceLocking propriété du contexte :

Ouvrez context.xml du dossier /tomcat/conf et modifiez le contexte pour qu'il corresponde à ceci :

<Context antiResourceLocking="true">

Edit : Mise à jour des propriétés suite au commentaire de @JanM. Auparavant, il contenait aussi 'antiJARLocking'.

0 votes

Cela se produit-il uniquement sous Windows ? Tomcat est basé sur Java, et je constate des problèmes similaires sur Ubuntu avec Tomcat.

2 votes

J'ai seulement dit que c'était courant pour Windows, du moins c'était le cas pour moi et les gens que je connais. Cela pourrait très bien être le même cas pour Ubuntu.

10 votes

De tomcat.apache.org/tomcat-7.0-doc/config/context.html AntiJARLocking est un sous-ensemble de l'antiResourceLocking et permet donc d'éviter le travail en double et les problèmes éventuels, un seul de ces attributs doit être défini comme vrai à tout moment. .

13voto

Amith Koujalgi Points 2005

C'est l'un des problèmes les plus courants avec Tomcat. Le serveur Tomcat s'empare des ressources au démarrage et les déploie. Pendant le déploiement, certaines ressources sont toujours utilisées par tomcat. Il n'a pas encore libéré la ressource, mais au même moment, un autre thread dans tomcat essaie de nettoyer les mêmes ressources. Par conséquent, la suppression de ces ressources échoue. La meilleure solution consiste à nettoyer manuellement le répertoire racine de l'application dans webapps.

1 votes

Cela ne fonctionne pas toujours. Si un fichier jar est verrouillé, vous ne pouvez pas supprimer le(s) dossier(s) parent(s). L'arrêt de l'application ne libère pas toujours ce jar. Forcer un redémarrage de Tomcat.

2voto

Sumant Points 33

J'ai rencontré le même problème avec Apache Tomcat/8.0.5. J'ai effectué les étapes suivantes en utilisant l'application manager et cela a fonctionné pour moi.

  • Fermez le navigateur, y compris tous les onglets (pour supprimer le cache).
  • Rouvrez l'application Manager App et assurez-vous que l'application est arrêtée (le bouton de démarrage doit être activé). arrêtée (le bouton de démarrage doit être activé).
  • Maintenant, cliquez sur undeploy.

Je pense que lorsque nous cliquons directement sur undeploy, il verrouille d'abord les jarres, arrête l'application et essaie d'undeployer mais échoue avec FAIL - Unable to delete message.

Si vous êtes vraiment confus avec le statut, fermez le navigateur, redémarrez Tomcat, ouvrez 'manager App', cliquez sur stop et ensuite undeploy.

0voto

Exécutez votre IDE en tant qu'administrateur. Cela fonctionne pour moi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X