web-dev-qa-db-fra.com

Le déploiement d'un fichier WAR me donne un code d'état 404 sur Tomcat?

Je suis assez nouveau pour Tomcat. J'ai juste réussi à construire un projet et à l'exporter sous forme de fichier WAR. J'ai essayé de copier manuellement un fichier WAR dans le dossier Tomcat puis de le redémarrer. Il a créé la structure de dossiers et tout, mais je reçois un code d'état 404 lorsque j'essaie d'atteindre l'application. J'ai essayé de le déployer via le panneau d'administration Tomcat, mais je constate le même comportement. Est-ce que je fais quelque chose de fondamentalement faux?

18
Legend

En supposant que vous ayez tous les privilèges avec l’installation de Tomcat, essayez de passer à http://localhost:8080/manager/html/. Si vous ne connaissez pas le mot de passe pour accéder à cette zone, recherchez le fichier Tomcat-users.xml dans votre répertoire ${Tomcat-installation}/conf. S'il n'y a pas d'entrées, vous voudrez ajouter une entrée comme celle-ci:

<user username="username" password="password" roles="admin,manager" />

Voyez si votre application apparaît dans cet écran et si c'est le cas, cliquez sur le lien et voyez si cela vous mène n'importe où. Si ce n'est pas le cas, je suggère de suivre les conseils d'ifishers et de consulter les fichiers journaux pour voir s'il contient des erreurs.

Mais en bref, quelque chose ne va probablement pas avec le web.xml de votre projet

9
Thomas

Ma meilleure hypothèse est que vous n'avez pas configuré les fichiers de bienvenue dans votre web.xml. Si vous allez dans/app/vous devez disposer d’un fichier par défaut. En règle générale, les personnes ont créé un fichier index.html ou ont des paramètres de fichier de bienvenue permettant d'indiquer à l'utilisateur le fichier jsp approprié.

3
Robert Diana

J'ai eu le même problème, mon problème était que je copiais le fichier via sftp directement dans le répertoire webapps de Tomcat, ce qui peut avoir provoqué un problème d'interrogation entraînant son déploiement incorrect. Tomcat surveille le répertoire webapps et à quel moment. il voit le fichier .xml sur lequel il va craquer et fait son travail, le problème est que peut-être que tout n'a pas encore été copié. :(

Il est préférable de créer un dossier intermédiaire, de déplacer ou de copier le fichier war dans ce dossier, puis d'utiliser la commande linux mv pour le déplacer dans les applications Web. Mv est atomique. Tomcat ne fera rien avant la fin de l'opération.

La magie.

Le mérite revient à un message très aléatoire que j’ai trouvé sur javarance et qui conduit à son tour à: http://pub.admc.com/howtos/Tomcat/ch02.html#stagedir-section

J'espère que ceci aide quelqu'un d'autre :)

3
null

J'ai le même problème. Mon problème est que le nom de mon application et le nom du fichier war sont différents. J'ai changé le nom du fichier war pour le nom de mon application.

Ici, lorsque votre application est déployée, Tomcat extrait automatiquement votre fichier war avec le même nom. Dans mon cas, mon nom de service est my-web-service (c'est-à-dire https: // localhost: 8080/my-web-service/ ) et mon nom de fichier war est MY-Java-connector-0.0.1-SNAPSHOT .war (c'est le nom de mon dossier de projet). Maintenant, Tomcat recherche le dossier de service my-web = et trouve le dossier epicor-Java-connector-0.0.1-SNAPSHOT. alors renommez le dossier en my-web = service.war et cela fonctionne.

2
Harshil

J'ai rencontré ce problème aussi.

Ma solution simple consiste à changer de chemin docBase.

problème se produit lorsque 

docBase=".../Tomcat/webapps/app_name.war";

problème résolu avec

docBase=".../Tomcat/webapps/app_foldername/web"
1
Carrie Zhang

J'ai eu le même problème avec Tomcat et je l'ai simplement résolu en forçant mon IDE à créer un fichier web.xml. Le mien avait disparu. Cela déploierait le projet mais j'aurais quand même l'erreur 404. J'ai lu plusieurs de ces tutoriels mais en vain. J'ai lu quelque part que le fichier web.xml devait être configuré correctement. Je suis allé à la recherche du fichier web.xml dans le dossier WEB-INF. Il n'y avait ni dossier ni fichier web.xml. J'ai fait une recherche rapide sur Google pour créer avec mon IDE puis compilé mon programme avec la sortie web.xml, ce qui a résolu le problème pour moi. J'espère que cela pourra aider. À votre santé!

0
Ohlaph

Plus récemment, cette condition peut survenir si Java_HOME pointe vers une version de Java antérieure à celle du code contenu dans le fichier WAR. Tomcat peut utiliser Java_HOME pour déterminer JRE_HOME qu'il affiche après avoir lancé startup.bat dans le répertoire BIN de Tomcat. Bien que Tomcat puisse se contenter de la version Java obtenue, cela pourrait ne pas être suffisant pour l’application. Dans mon cas, Tomcat 8.0.49 fonctionnait correctement avec JDK1.7, alors que l’application n’était pas du tout en cours d’initialisation (oui, c’était une application Spring Boot, WAR était en train d’être décompressé, mais c’est tout) - sans donner d’erreur. Après avoir défini Java_HOME sur l'emplacement de JDK1.8, le problème a été résolu.

0
hello_earth

FWIW J'ai eu ce problème et je l'ai corrigé en découvrant que j'accédais au mauvais hôte, comme " http: // wronghost: 8080/why_is_this_war_not_there " donc si le message "XX.war a été déployé" dans catalina.out/localhost . *. Cela peut être un indice pour les adeptes.

0
rogerdpack