Impossible de annuler le déploiement complet d’une application Web dans Tomcat 7

J’utilise l’application gestionnaire dans tomcat 7 et je ne parviens pas à annuler complètement le déploiement d’une application.

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

Je lis quelque part son à cause d’un phénomène appelé fuite de mémoire, et si nous le corrigeons, le problème sera résolu.

Quelqu’un peut-il me dire quelle est cette fuite de mémoire dans tomcat 7, et comment pouvons-nous le réparer? J’utilise Windows 7 OS. Si je suis en mesure de résoudre ce problème, mon processus de déploiement et de redéploiement se déroulera-t-il correctement?

Ceci est très courant dans un environnement Windows, mais il existe une solution:

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

  

Modifier: propriétés mises à jour après le commentaire @JanM. Auparavant, il contenait également «antiJARLocking»

Ceci est l’un des problèmes communs avec Tomcat. Le serveur Tomcat attrape les ressources au démarrage et les déploie. Lors de l’annulation du déploiement, certaines ressources seraient encore utilisées par tomcat. Il n’aurait pas encore publié la ressource, mais en même temps, un autre thread dans tomcat essaierait de nettoyer les mêmes ressources. Par conséquent, la suppression de ces ressources échouerait. Le meilleur moyen consiste à nettoyer manuellement le répertoire racine de l’application dans les applications Web.

antiResourceLocking:
Si true, Tomcat empêchera tout locking de fichier. Cela aura un impact significatif sur le temps de démarrage des applications, mais permettra de déployer et de désinstaller des applications Web complètes à chaud sur des plates-formes ou des configurations où le locking de fichiers peut se produire. S’il n’est pas spécifié, la valeur par défaut est false.

Veuillez noter que la définition de ceci sur true entraîne des effets secondaires, notamment la désactivation du rechargement JSP sur un serveur en cours d’exécution: voir Bugzilla 37668.

Notez que si vous définissez cet indicateur sur true dans les applications situées en dehors de appBase pour l’hôte (le répertoire webapps par défaut), l’application sera supprimée à l’arrêt Tomcat. Vous ne voulez probablement pas le faire, alors réfléchissez-y à deux fois avant de définir antiResourceLocking = true sur une application Web qui se trouve hors de l’appBase pour son hôte.

J’ai rencontré le même problème dans Apache Tomcat / 8.0.5. J’ai fait les étapes suivantes en utilisant App Manager et cela a fonctionné pour moi.

  • Fermez le navigateur, y compris tous les tabs (pour supprimer le cache).
  • Rouvrez le “Gestionnaire d’application” et assurez-vous d’abord que l’application est arrêtée (le bouton de démarrage doit être activé).
  • Cliquez maintenant sur undeploy.

Je pense que lorsque nous cliquons directement sur undeploy, il verrouille d’abord les jars, arrête l’application et tente de se désinstaller mais échoue avec FAIL - Unable to delete message.

Si vous avez vraiment confondu avec le statut, fermez le navigateur, redémarrez tomcat, ouvrez ‘manager app’, cliquez sur stop puis sur undeploy.