web-dev-qa-db-fra.com

Déploiement de mon application à la racine dans Tomcat

J'ai le dossier de guerre de ma candidature. J'ai besoin de déployer ceci au niveau racine. L'URL actuelle est http://localhost:8080/war_name/application_name.

123
iamjustcoder

Vous avez plusieurs options:

  1. Supprimez le répertoire ROOT/ prêt à l'emploi de Tomcat et renommez votre fichier war en ROOT.war avant de le déployer.

  2. Déployez votre war comme (à partir de votre exemple) war_name.war et configurez le racine de contexte dans conf/server.xml pour utiliser votre fichier war:

    <Context path="" docBase="war_name" debug="0" reloadable="true"></Context>
    

Le premier est plus facile, mais un peu plus compliqué. La seconde est probablement la manière la plus élégante de le faire.

201
Rob Hruska

sur Tomcat v.7 (installation de vanille)

dans votre conf/server.xml, ajoutez le bit suivant vers la fin du fichier, juste avant la balise de fermeture </Host>:

<Context path="" docBase="app_name">
    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

Notez que docBase attribut. C'est le bit important. Vous devez soit vous assurer que vous avez déployé nom_app avant de modifier votre application Web racine, soit simplement copier votre application Web décompressée (nom_app) dans le dossier de vos applications Web de Tomcat. Démarrage, visitez root, voyez votre app_name ici!

31
Peter Perháč

Dans Tomcat 7, avec ces modifications, je peux accéder à myAPP à/et à ROOT à/ROOT.

<Context path="" docBase="myAPP">
     <!-- Default set of monitored resources -->
     <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="ROOT" docBase="ROOT">
     <!-- Default set of monitored resources -->
     <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

Ajouter ci-dessus à la section <Host> du fichier server.xml

13
Sudheer Palyam

Je sais que ma réponse recoupe en quelque sorte l'autre réponse, mais c'est une solution complète qui présente certains avantages. Cela fonctionne sur Tomcat 8:

  1. L'application principale est servie à partir de la racine
  2. Le déploiement des fichiers war via l'interface Web est maintenu.
  3. L'application principale s'exécutera sur le port 80, tandis que seuls les administrateurs auront accès aux dossiers de gestion (je réalise que les systèmes * nix nécessitent un superutilisateur pour se connecter à 80, mais ce n'est pas un problème sous Windows).

Cela signifie qu'il vous suffit de redémarrer Tomcat une seule fois et que, après la mise à jour, les fichiers war peuvent être déployés sans problème.

Étape 1: dans le fichier server.xml, recherchez l'entrée de connecteur et remplacez-la par:

_<Connector 
    port="8080"
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

<Connector
    port="80"
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />
_

Étape 2: Définissez les contextes dans la balise _<Host ...>_:

_<Context path="/" docBase="CAS">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/ROOT" docBase="ROOT">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/manager" docBase="manager" privileged="true">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/Host-manager" docBase="Host-manager" privileged="true">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
_

Notez que j'ai adressé toutes les applications dans le dossier webapp. Le premier bascule efficacement de la position de la racine et de l'application principale. ROOT est maintenant sur _http://example.com/ROOT_ et l'application principale est sur _http://example.com/_. Les applications Web protégées par mot de passe nécessitent l'attribut _privileged="true"_.

Lorsque vous déployez un fichier CAS.war qui correspond à la racine (_<Context path="/" docBase="CAS">_, vous devez le recharger dans le panneau d'administration, car il ne s'actualise pas avec le déploiement.

N'incluez pas le _<Context path="/CAS" docBase="CAS">_ dans vos contextes car il désactive l'option de gestion permettant de déployer des fichiers war. Cela signifie que vous pouvez accéder à l'application de deux manières: _http://example.com/_ et _http://example.com/APP/_

Étape 3: Pour éviter tout accès indésirable au dossier racine et au dossier du gestionnaire, ajoutez un Valve à ces balises de contexte, comme ceci:

_<Context path="/manager" docBase="manager" privileged="true">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <Valve className="org.Apache.catalina.valves.RemoteAddrValve"
        addConnectorPort="true"
        allow="143\.21\.2\.\d+;8080|127\.0\.0\.1;8080|::1;8080|0:0:0:0:0:0:0:1;8080"/>
</Context>
_

Cela limite essentiellement l'accès au dossier de l'application Web admin aux personnes de mon propre domaine (fausse adresse IP) et localhost lorsqu'elles utilisent le port par défaut 8080, et permet de déployer de manière dynamique les fichiers war via l'interface Web.

Si vous souhaitez utiliser cela pour plusieurs applications utilisant différentes adresses IP, vous pouvez ajouter l'adresse IP au connecteur (_address="143.21.2.1"_).

Si vous souhaitez exécuter plusieurs applications Web à partir de la racine, vous pouvez dupliquer le numéro de service (utilisez un nom différent pour le second) et modifier la base de documents de _<Context path="/" docBase="CAS">_ en par exemple _<Context path="/" docBase="ICR">_.

10
KimvdLinde

Supprimer $CATALINA_HOME/webapps/ROOT. Mettez à jour $CATALINA_HOME/conf/server.xml, assurez-vous que l'élément Host ressemble au texte suivant:

<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="false" deployOnStartup="false">
  <Context path="" docBase="myApp"></Context>

Cela fonctionne avec Tomcat 8. autoDeploy et deployOnStartup doivent avoir la valeur false pour empêcher Tomcat de déployer deux fois myApp.

6
Jingguo Yao

Le moyen le plus rapide.

  1. Assurez-vous de ne pas avoir déployé l'application ROOT, annulez le déploiement si vous en avez un.

  2. Renommez votre guerre en ROOT.war, déployez, c'est tout, aucune modification de configuration n'est nécessaire.

4
Dima

Ajoutant au sol de @Rob Hruska, ce paramètre de la section server.xml à l'intérieur fonctionne:

<Context path="" docBase="gateway" reloadable="true" override="true"> </Context>

Remarque: override = "true" peut être requis dans certains cas.

1
AVM