Je sais que je peux renommer ma webapp (ou son fichier WAR) en ROOT mais c'est une façon terrible de le faire, à mon humble avis. Maintenant, j'ai vérifié le doc Tomcat et il est dit
Il n'est PAS recommandé de placer des éléments directement dans le fichier server.xml
J'ai donc essayé de faire une autre méthode suggérée.
Les éléments de contexte individuels peuvent être explicitement définis: Dans un fichier individuel dans /META-INF/context.xml dans les fichiers de l'application.
J'ai donc créé un /META-INF/context.xml
avec le code suivant,
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/"/>
Mais après le déploiement, lorsque j'ai redémarré le serveur, le chargement du contexte à "/" n'a toujours pas abouti, il l'a quand même chargé avec le "/<WEB_APP_NAME>"
Tous les indicateurs utiles.
Ce que vous pouvez faire est le suivant:
Ajouter un fichier appelé ROOT.xml
dans <catalina_home>/conf/Catalina/localhost/
Ce fichier ROOT.xml remplacera les paramètres par défaut du contexte racine de l'installation de Tomcat pour ce moteur et cet hôte (Catalina et localhost).
Entrez ce qui suit dans le fichier ROOT.xml;
<Context
docBase="<yourApp>"
path=""
reloadable="true"
/>
Ici, <yourApp>
est le nom de, eh bien, votre application .. :)
Et voilà, votre application est maintenant l'application par défaut et s'affichera sur http://localhost:8080
Cependant, il y a un effet secondaire; votre application sera chargée deux fois. Une fois pour localhost:8080
et une fois pour localhost:8080/yourApp
. Pour résoudre ce problème, vous pouvez placer votre application OUTSIDE <catalina_home>/webapps
et utiliser un chemin relatif ou absolu dans la balise docBase du fichier ROOT.xml. Quelque chose comme ça;
<Context
docBase="/opt/mywebapps/<yourApp>"
path=""
reloadable="true"
/>
Et alors tout devrait bien se passer!
Voici les seules solutions qui ont fonctionné pour moi. Ajoutez ceci au nœud hôte dans le fichier conf/server.xml
<Context path="" docBase="yourAppContextName">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
accédez au fichier server.xml de Tomcat et définissez le chemin vide.
Dans Tomcat 9.0, il suffit de modifier les éléments suivants dans le server.xml
<Context docBase="web" path="/web" reloadable="true" source="org.Eclipse.jst.jee.server:web"/>
à
<Context docBase="web" path="" reloadable="true" source="org.Eclipse.jst.jee.server:web"/>
Ce petit code a fonctionné pour moi, en utilisant des hôtes virtuels
<Host name="my.Host.name" >
<Context path="" docBase="/path/to/myapp.war"/>
</Host>
Le plus rapide et peut être la meilleure solution est d'avoir le contenu ci-dessous dans <Tomcat_INSTALL_DIR>/conf/Catalina/localhost/ROOT.xml
<Context
docBase="/your_webapp_location_directory"
path=""
reloadable="true"
/>
Et votre application Web sera disponible à l'adresse http://<Host>:<port>/
Cela fait un mois que je suis confronté à ce problème. Mettre la balise de contexte dans server.xml n'est pas sûr. Cela affecte les éléments de contexte déployés pour tous les autres hôtes. Pour les applications volumineuses, les erreurs de connexion ne sont pas bonnes. Par exemple, vous pouvez accéder à d'autres sites par nom de dossier domain2 .com/domain1Folder !! également les connexions de session de base de données chargées deux fois L'autre façon est de placer le fichier ROOT.xml qui a une balise de contexte avec un chemin complet, tel que:
<Context path="" docBase="/var/lib/Tomcat7/webapps/ROOT" />
dans conf/catalina/webappsfoldername et déployez le fichier war en tant que ROOT.war dans webappsfoldername et spécifiez également l'hôte tel que
<Host name="domianname" appBase="webapps2" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false" >
<Logger className="org.Apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>
</Host>
Dans cette approche, même pour les applications de même type, les sessions utilisateur n'ont pas une bonne isolation! vous pouvez dans app1 si app1 identique à app2, vous pouvez vous connecter automatiquement à app2 après avoir ouvert une session par session côté serveur.! Vous devez donc conserver la session des utilisateurs dans le cache côté client et non avec jsessionid! nous pouvons changer le nom du moteur localhost pour le résoudre. mais disons que jouer avec Tomcat a besoin de plus de temps que de jouer avec d'autres chats!
Pour moi, les deux réponses ont fonctionné.
<Context docBase="/tmp/wars/hpong" path="" reloadable="true" />
<Service name="Catalina2"> <Connector port="8070" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8743" /> <Engine name="Catalina2" defaultHost="localhost"> <Host name="localhost" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/tmp/wars/hpong" reloadable="true"> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context> </Host> </Engine> </Service>
Remarque: lorsque vous déclarez docBase sous contexte, ignorez appBase sur l'hôte.
ROOT.war
et le placer sous Webapps. Alors maintenant, les demandes d'URL incomparables d'autres guerres (chemins de contexte) vont aboutir dans cette guerre. C'est une meilleure façon de gérer le chemin de contexte ROOT ("/ **").La deuxième option consiste également à (double) charger les guerres à partir du dossier Webapps. En outre, il ne nécessite que le dossier de guerre non compressé, ce qui est un casse-tête.
Il n'est pas recommandé de mettre à jour la configuration du serveur comme server.xml ou ROOT.xml.
Vous pouvez placer un fichier de configuration context.xml dans le répertoire META-INF de votre application Web, avec le paramètre de chemin de contexte inclus. Cela remplacera le paramètre de serveur par défaut?
c'est à dire.:
<Context docBase="yourAppName" path="/yourAppPath" reloadable="true">
Tomcat 8: après de nombreuses recherches, il ne s'agit que du code qui fonctionne: dans le fichier server.xml
<!-- Set /Apple as default path -->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="Apple">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
</Host>
Redémarrez Tomcat, assurez-vous que lorsque vous accédez à 127.0.0.1:8080, le contenu s'affiche dans 127.0.0.1:8080/Apple
Mon projet était Java une application Web créée par Netbeans, j’ai défini le chemin du contexte dans la configuration du projet, rien d’autre, même si j’ai mis Apple.war dans le dossier webapps.
<Context docBase="yourAppName" path="" reloadable="true">
accédez au fichier server.xml de Tomcat et définissez le chemin vide.
La solution la plus simple et la plus flexible est présentée ci-dessous: Inside $ {Tomcat_home} /config/server.xml
Modifiez le autoDeploy = "false" deployOnStartup = "false" sous hôte comme ci-dessous c'est incontournable.
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="false" deployOnStartup="false">
Ajouter la ligne ci-dessous sous l'élément hôte.
<Context path="" docBase="ServletInAction.war" reloadable="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
Avec l'approche ci-dessus, nous pouvons ajouter autant d'applications sous des applications Web avec des noms de chemin de contexte différents.
Dans Tomcat 8.X, sous le répertoire de base de Tomcat/conf/folder dans le fichier server.xml, vous pouvez ajouter la balise <Context>
sous la balise <Host>
, comme indiqué ci-dessous. Mais vous devez redémarrer le serveur pour prendre effet
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="${catalina.base}\webapps\<Your App Directory Name>" path="<your app path you wish>" reloadable="true" />
</Host>
OU si vous utilisez Tomcat 7.X, vous pouvez ajouter un fichier context.xml dans le dossier WEB-INF de votre projet. Le contenu du fichier que j'ai utilisé est comme indiqué. et cela a bien fonctionné pour moi. vous n'avez pas à redémarrer le serveur dans ce cas.
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="${catalina.base}\webapps\<My App Directory Name>" path="<your app path you wish>" reloadable="true" />