2 votes

Impossible de déployer automatiquement une guerre dans Tomcat

Cela fait 3 heures que j'essaie ce truc et rien. J'ai besoin de déposer un nouveau war et que tomcat le déploie automatiquement. Cela ne se produit pas. Voici ma configuration simplifiée :

server.xml

<Engine name="Catalina" defaultHost="localhost">
  <Host name="something.com" appBase="/var/www/something.com/webapps"
        unpackWARs="false" autoDeploy="true" 
        xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="application.war" debug="0" reloadable="true">
      ... some realm and data source stuff here
    </Context>
  </Host>
</Engine>

Lorsque je démarre tomcat, tout fonctionne parfaitement. J'ai essayé deux approches :

  1. Copier une nouvelle guerre à l'aide de scp dans l'emplacement.
  2. Toucher /var/www/something.com/webapps/application.war .

Dans les deux cas, je vois catalina.err avec le même message :

INFO: Undeploying context [/application]

En l'absence d'une

INFO: Deploying web application archive application.war

que j'obtiens lorsque je redémarre tomcat. J'ai l'impression que c'est parce qu'il n'est pas à l'intérieur du fichier CATALINA_BASE/webapps mais ne savent pas comment procéder. Comment faire ?

4voto

AlexCuse Points 9823

Il peut s'agir d'un certain nombre de choses. J'ai rencontré quelques problèmes spécifiques :

(1) Permissions de fichiers. Assurez-vous que le répertoire webapps, votre répertoire de travail, le war lui-même, et tous les fichiers spéciaux auxquels il accède sont tous lisibles/écrivables par l'utilisateur qui exécute Tomcat (idéalement, ils devraient appartenir à cet utilisateur).

(2) La version précédente n'est pas entièrement supprimée. Essayez d'arrêter Tomcat, de supprimer le war et le dossier correspondant, de copier le nouveau war, puis de démarrer Tomcat. Si cela fonctionne alors, le problème peut venir des fichiers restants. (J'ai par exemple une application qui ne se nettoie pas complètement).

(3) L'application peut ne pas s'initialiser correctement en raison de problèmes liés à l'application. Si le war se déploie automatiquement dans un dossier, l'autodeploy fonctionne, mais l'application ne s'est pas complètement initialisée. Recherchez les messages du journal. En fonction de votre application, ils peuvent se trouver dans tomcat/logs, dans le répertoire courant ou dans la sortie standard. Si vous le pouvez, modifiez les propriétés du journal (par exemple le fichier log4j.properties) pour afficher les messages de niveau debug.

(4) Problèmes de mémoire de Permgen. Lorsque vous rechargez une application dans Tomcat, cela consomme de la mémoire Permgen. Par définition, cette mémoire ne peut pas être récupérée. Si vous rechargez trop, Tomcat se bloquera avec une erreur de mémoire insuffisante (vous pouvez généralement le voir dans vos journaux). Configurez plus de permgen, ou mieux encore, arrêtez/redémarrez Tomcat lorsque vous redéployez une application.

http://wiki.apache.org/tomcat/OutOfMemory

0voto

Chicob13 Points 13

Je pense que le coupable est le unpackWARs="false"

A partir d'un publication récente sur stackoverflow Il a été constaté que unpackWARs="false" car la nouvelle version du WAR n'est pas détectée. Une raison spécifique pour laquelle elle est non détectée ? false ?

0voto

user1850479 Points 111

Ne devrait-il pas être docBase="application" no docBase="application.war" ? Si je comprends bien, Tomcat cherchera d'abord un dossier /var/www/something.com/webapps/application/ et s'il n'existe pas, cherchez /var/www/something.com/webapps/application.war

0voto

user448174 Points 1

Si vous utilisez maven , en pom.xml vous pouvez définir une balise comme

<properties>
    <local.tomcat.autodeploy.folder>//pathtoTomcatWebapp folder</local.tomcat.autodeploy.folder>
            <local.build.finalName>nameOfContext</local.build.finalName>
            <localonly>true</localonly>

        <dev.tomcat.autodeploy.folder>specify location</dev.tomcat.autodeploy.folder>
        <dev.build.finalName>nameOfContext</dev.build.finalName>

</properties>

0voto

Venkat Points 1

Bien qu'il s'agisse d'un vieux sujet, je voulais juste souligner une chose. Dans l'IDE, faites un clic droit sur le serveur, cherchez l'emplacement du serveur et sélectionnez Utiliser l'installation de Tomcat. Cela prendra le contrôle de l'emplacement installé et fera exploser la guerre.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X