Je développe une application Java basée sur le Web au travail et (évidemment) je dois l'exécuter localement pendant le développement. J'ai compris les documents Tomcat et j'ai un fichier context.xml approprié /etc/tomcat6/Catalina/localhost/
mais de temps en temps, Tomcat décide de le supprimer! Ce qui signifie que je dois le remettre et redémarrer Tomcat.
Pourquoi fait-il ça? J'ai cherché dans les documents Tomcat à ce sujet et je ne suis pas plus sage.
(Oh oui: ce n'est pas réellement appelé context.xml
mais owners.xml
comme c'est le préfixe du chemin HTTP pour cette application.)
Mise à jour
J'ai maintenant vu Tomcat supprimer le fichier pendant que Tomcat était en cours d'exécution . Je pense que je dois déposer un bug ...
Réponses:
Résumé rapide : il existe plusieurs conditions (comme changer le fichier war, supprimer la webapp ou la remplacer par un nouveau contenu) dans lesquelles tomcat annulera le déploiement du contexte, y compris la suppression du fichier de contexte.
Détails : si tomcat fait ou non le déploiement automatique (cela signifie vérifier les changements dans votre descripteur .xml ainsi que vérifier les changements dans le répertoire webapp) est déterminé par:
server.xml localisé dans la section $ CATALINA_HOME / conf / server.xml:
<Nom d'hôte = "localhost" appBase = "webapps" unpackWARs = "true" autoDeploy = "true" xmlValidation = "false" xmlNamespaceAware = "false">
Vous pouvez également définir cette propriété dans votre fichier de contexte en surchargeant la valeur
La citation du document pour les cas où autoDeploy = true peut entraîner la suppression de votre fichier de contexte:
Détails exhaustifs : http://tomcat.apache.org/tomcat-6.0-doc/config/host.html#Automatic%20Application%20Deployment
la source
Si vous ne voulez pas la fonction autoDeploy , dans les environnements de production par exemple, vous pouvez considérer les attributs suivants dans le fichier de contexte conf / Catalina / localhost:
autoDeploy = "false" peut ne pas fonctionner seul car l'application context.xml (dans META-INF) peut remplacer les paramètres server.xml de autoDeploy.
documentation d' attribut deployXML La documentation d' attribut vaut la peine d'être lue (§ Implémentation standard).
Cas utilisateur exhaustif autoDeploy, et lorsque le contexte est supprimé: c'est-à-dire que l'application n'est pas déployée, le cas utilisateur est documenté peut être trouvé ici .
la source
Je ne peux pas répondre au pourquoi .
Cependant, ce lien indique que vous pouvez arrêter ce en définissant le
autoDeploy="false"
dansserver.xml
la source
Honnêtement, je ne sais pas quel est le raisonnement derrière Tomcat, mais essayez d'ajouter l'attribut XML suivant à votre élément de contexte
Votre contexte pourrait donc ressembler à ceci:
Cela devrait empêcher Tomcat de supprimer le fichier
la source
Je me rends compte que c'est un vieux fil, mais j'ai pensé partager ce que j'ai trouvé pour résoudre ce problème ...
J'avais eu exactement le même problème avec mon fichier context.xml pour ma version de bureau de tomcat qui était encombré chaque fois que je déployais une nouvelle copie du fichier war pour mon application.
Le problème était dû au fait que j'apportais des modifications à ce fichier directement sur le système de fichiers. Ce qui a résolu le problème était d'éditer le fichier context.xml via mon éditeur Eclipse. À l'intérieur de mon Eclipse, il y a un projet "serveurs" qui une fois que vous l'avez développé, vous pouvez voir une poignée de fichiers, tels que context.xml et server.xml. Il semble que si vous modifiez les fichiers à partir d'ici au lieu d'aller vers le système de fichiers, vos modifications sont conservées.
J'ai trouvé cette solution dans le fil suivant: https://www.liferay.com/community/forums/-/message_boards/message/16511799
J'espère que ça aidera quelqu'un d'autre!
-StephenS
la source
Le problème général tel que décrit par le titre est couvert par Redéployer après la guerre sans supprimer le contexte qui est toujours un problème ouvert pour le moment.
Il existe une distinction reconnue entre le redéploiement qui ne supprime pas le contexte et le déploiement après le non-déploiement où le non-déploiement supprime le contexte. La documentation était obsolète et l'interface graphique du gestionnaire ne prend toujours pas en charge le redéploiement.
la source
Parfois, il est nécessaire d'avoir des valeurs différentes pour l'application sur le serveur, par exemple un chemin pour stocker les fichiers téléchargés. Dans l'environnement de développement mabe, nous avons quelque chose comme ceci:
Mais dans le serveur, le chemin est différent:
J'ai également le même problème, tomcat supprimant le context.xml (meapp.xml) de conf / Catalina / localhost
Pour résoudre, j'utilise context.xml.default, dans le même chemin, je crée un fichier appelé context.xml.default et à l'intérieur d'une configuration de mise que je souhaite conserver:
Ainsi, lors du redéploiement de l'application, les paramètres de confir sont toujours là.
la source