Comment définir le chemin de contexte d'une application web Tomcat 7.0

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 dit

Il N'est pas recommandé de placer des éléments directement dans le serveur.fichier xml

J'ai donc essayé de le faire une autre méthode qu'il a suggérée.

Les éléments de contexte individuels peuvent être explicitement définis: fichier individuel à / META-INF / context.xml dans l'application fichier.

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, il n'a toujours pas réussi à charger le contexte à"/", il l'a toujours chargé avec le "/<WEB_APP_NAME>"

Tous les pointeurs utiles.

144
demandé sur Lucky 2011-09-02 01:51:26

11 réponses

Ce que vous pouvez faire est le suivant;

Ajouter un fichier appelé ROOT.xml dans <catalina_home>/conf/Catalina/localhost/

Cette racine.xml remplacera les paramètres par défaut pour le contexte racine de l'installation tomcat pour ce moteur et hôte (Catalina et localhost).

Entrez ce qui suit à la racine.fichier xml;

<Context 
  docBase="<yourApp>" 
  path="" 
  reloadable="true" 
/>

Ici <yourApp> est le nom de votre application.. :)

Et là vous allez, votre application est l'application par défaut et apparaîtra sur http://localhost:8080

Cependant, il y a est un effet secondaire; votre application sera chargée deux fois. Une fois de localhost:8080 et une fois pour localhost:8080/yourApp. Pour résoudre ce problème, vous pouvez placer votre application en dehors de <catalina_home>/webapps et utiliser un chemin relatif ou absolu dans la racine.la balise docbase xml. Quelque chose comme ça;

<Context 
  docBase="/opt/mywebapps/<yourApp>" 
  path="" 
  reloadable="true" 
/>

Et alors tout devrait être OK!

202
répondu Paaske 2013-07-24 18:02:09

Voici les seules solutions qui ont fonctionné pour moi. Ajoutez ceci au noeud D'hôte dans le conf / server.xml

<Context path="" docBase="yourAppContextName">

  <!-- Default set of monitored resources -->
  <WatchedResource>WEB-INF/web.xml</WatchedResource>

</Context>

Accédez au serveur Tomcat.fichier xml et définir le chemin vide

13
répondu rodvlopes 2017-03-27 21:09:37

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>
3
répondu Jorge Sanchez 2013-06-20 15:59:27

Dans Tomcat 9.0, je dois seulement changer ce qui suit 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"/>
3
répondu MK Yung 2018-04-09 16:04:43

Le plus rapide et peut être la meilleure solution est d'avoir du contenu ci-dessous dans <TOMCAT_INSTALL_DIR>/conf/Catalina/localhost/ROOT.xml

<Context 
  docBase="/your_webapp_location_directory" 
  path="" 
  reloadable="true" 
/>

Et votre webapp sera disponible à http://<host>:<port>/

2
répondu Rajesh Gheware 2014-05-18 13:29:03

J'ai fait face à ce problème pendant un mois, en mettant une balise de contexte dans le serveur.xml n'est pas sûr, il affecte les éléments de contexte de déploiement pour tous les autres hôtes, pour les grandes applications, il prend des erreurs de connexion aussi pas une bonne isolation par exemple, vous pouvez accéder à d'autres sites par nom de dossier domain2.com/domain1Folder !! aussi les connexions de session de base de données chargées deux fois ! l'autre façon est de mettre la racine.fichier xml qui a une balise de contexte avec un chemin complet tel:

 <Context path="" docBase="/var/lib/tomcat7/webapps/ROOT" />

Dans conf / catalina/webappsfoldername et déployer le fichier war comme RACINE.guerre dans webappsfoldername et spécifiez également l'hôte Tel

 <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 aussi pour les applications de même type sessions utilisateur n'a pas une bonne isolation ! vous pouvez à l'intérieur app1 si app1 même que app2 vous pouvez après la connexion par session côté serveur peut automatiquement se connecter à app2 ?! Vous devez donc garder la session des utilisateurs dans le cache côté client et non avec jsessionid ! nous pouvons changer le nom du moteur de localhost pour le résoudre. mais disons que jouer avec tomcat besoin de plus de temps que de jouer avec d'autres des chats!

1
répondu Ali.Mojtehedy 2014-03-20 22:25:12

<Context docBase="yourAppName" path="" reloadable="true">

Accédez au serveur Tomcat.fichier xml et définir le chemin vide

1
répondu Vipin Yadav 2017-01-11 12:11:56

Tomcat 8 : Après de nombreuses recherches cela ne fonctionne que du code: dans le serveur.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, il affichera le contenu dans 127.0.0.1: 8080 / apple

Mon projet était une application Web java créée par netbeans, j'ai défini le chemin du contexte dans la configuration du projet, pas d'autre chose, même si j'ai mis apple.guerre dans le dossier webapps.

1
répondu user3600935 2018-04-03 19:43:40

Il n'est pas recommandé de mettre à jour la configuration du serveur comme server.xml ou de la RACINE.XML.

Vous pouvez mettre un contexte.fichier de configuration xml sous le répertoire META-INF de votre application web, avec le paramètre context path inclus. Cela remplacera le paramètre de serveur par défaut?

C'est-à-dire:

<Context docBase="yourAppName" path="/yourAppPath" reloadable="true">
0
répondu Ivan 2015-01-16 04:28:57

Pour moi, les deux réponses ont fonctionné.

  1. Ajout D'un fichier appelé ROOT.xml dans /conf/Catalina/localhost/
<Context
    docBase="/tmp/wars/hpong"
  path=""
  reloadable="true"
/>
  1. Ajout d'une entrée dans le serveur.xml
<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.

  1. cependant, j'ai préféré convertir mon nom de guerre en ROOT.war et le placer sous webapps. Alors maintenant, les demandes d'url inégalées d'autres guerres (contextpaths) atterriront dans cette guerre. C'est la meilleure façon pour gérer le chemin de contexte racine ("/**").

La deuxième option est (double) le chargement des guerres à partir du dossier Webapps ainsi. En outre, il n'a besoin que d'un dossier de guerre non compressé qui est un mal de tête.

0
répondu Kanagavelu Sugumar 2018-07-18 05:29:51

L'astuce ci-dessous a fonctionné pour moi.

1) commentez / supprimez la configuration ci-dessous du serveur.fichier xml (dans le dossier conf) de tomcat.

2) Supprimez le dossier racine existant (le cas échéant) résidant dans le dossier webapps tomcat. Et renommez votre guerre (par exemple: test.de guerre ) le fichier RACINE.guerre.

Rappelez-vous que tout en renommant le fichier war en ROOT.la "racine" de guerre devrait être en majuscules.

Limitation: vous ne pouvez déployer qu'une seule application dans une instance tomcat.

-6
répondu Kulshrest Gautam 2013-10-17 06:35:13