web-dev-qa-db-fra.com

Comment changer l'application ROOT?

J'essaie de modifier l'application par défaut d'un serveur Web Tomcat 6 en une application différente de "ROOT" (dans le dossier webapps). Quelle est la meilleure façon de procéder?

128
Jacques

Il y a trois méthodes:

  • Commencez par éteindre votre Tomcat à partir du répertoire bin (sh shutdown.sh). Supprimez ensuite tout le contenu de votre dossier Tomcat webapps (rm -fr *). Renommez ensuite votre fichier WAR en ROOT.war et lancez enfin votre Tomcat à partir du répertoire bin (sh startup.sh).

  • Laissez votre fichier war dans $CATALINA_BASE/webapps sous son nom d'origine. Désactivez autoDeploy et deployOnStartup dans votre élément Host dans le server.xml fichier. Définissez explicitement tous les contextes d’application dans server.xml, en spécifiant le chemin et docBase attributs. Vous devez le faire car vous avez désactivé tous les mécanismes de déploiement automatique de Tomcat. Tomcat ne déploiera plus vos applications à moins de trouver leur contexte dans le server.xml.

    deuxième méthode: pour pouvoir modifier une application, vous devez arrêter et redémarrer Tomcat.

  • Placez votre fichier WAR en dehors de $CATALINA_BASE/webapps (il doit être en dehors pour éviter un double déploiement). Placez un fichier de contexte nommé ROOT.xml dans $CATALINA_BASE/conf/. L'élément unique dans ce fichier de contexte DOIT avoir un attribut docBase pointant vers l'emplacement de votre fichier WAR. L'élément path ne doit pas être défini - il est dérivé du nom du fichier .xml, dans ce cas ROOT.xml. Voir le documentation pour le conteneur Context pour plus de détails.

référence

126
user597987

Ajouter une balise <Context> à la balise <Host> dans server.xml pour Tomcat 6 résoudra le problème.

Si vous utilisez path="" vide, vous pouvez utiliser une URL telle que http://localhost/first.do.

Dans les attributs de jeu de balises de contexte docBase="E:\struts-ITRCbook\myStrutsbook" et reloadable="true", mettez fin à la balise de contexte.

Ça devrait ressembler a quelque chose comme ca:

<Host name="localhost"  appBase="webapps" 
        unpackWARs="true" autoDeploy="true"
        xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="E:\struts-ITRCbook\myStrutsbook" reloadable="true">
    </Context>
</Host>
24
ze.

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

<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>

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

23
Sudheer Palyam

L'application par défaut ROOT est généralement Tomcat Manager - ce qui peut être utile, donc j'avais envie de la garder.

Donc, la façon dont j'ai fait my app ROOT et gardé TCmgr était comme ça.

renommé ROOT à quelque chose d'autre

mv ROOT TCmgr

a ensuite créé un lien symbolique par lequel ROOT pointe vers l'application que je veux utiliser par défaut.

ln -s <your app> ROOT

travaillé pour moi et semblait l'approche la plus facile.

15
nestochan

Vous pouvez le faire de manière légèrement piratée en:

  1. Arrêtez Tomcat
  2. Déplacez ROOT.war de côté et rm -rf webapps/ROOT
  3. Copiez la webapp que vous voulez webapps/ROOT.war
  4. Démarrer Tomcat
12
gareth_bowles

Selon la documentation Apache Tomcat, vous pouvez modifier l'application en créant un fichier ROOT.xml. Voir cela pour plus d'informations:

http://Tomcat.Apache.org/Tomcat-6.0-doc/config/context.html

"L'application Web par défaut peut être définie à l'aide d'un fichier nommé ROOT.xml."

11
Jon

Une autre solution consisterait à créer un servlet qui envoie une redirection vers l'application Web souhaitée par défaut et mappe ce servlet sur toutes les URL de l'application Web ROOT.

package com.example.servlet;

import Java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class RedirectServlet extends HttpServlet {

  @Override
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.sendRedirect("/myRootWebapp");
  }
}

Ajouter la classe ci-dessus à
CATALINA_BASE/webapps/ROOT/WEB-INF/classes/com/example/servlet.
Et ajoutez ce qui suit à
CATALINA_BASE/webapps/ROOT/WEB-INF/web.xml:

  <servlet>
    <display-name>Redirect</display-name>
    <servlet-name>Redirect</servlet-name>
    <servlet-class>com.example.servlet.RedirectServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Redirect</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

Et si vous le souhaitez, vous pouvez facilement modifier le RedirectServlet pour accepter un paramètre d'initialisation vous permettant de définir l'application Web par défaut sans avoir à modifier le source.

Je ne sais pas si cela aurait des implications négatives, mais je l'ai testé et cela semble fonctionner.

3
Jonathan Dixon

la configuration context.xml n'a pas fonctionné pour moi. Tomcat 6.0.29 se plaint de la présence de la docBase dans l'appBase: ... Pour Tomcat 5, cela fonctionnait réellement.

Une solution consiste donc à placer l’application dans le dossier ROOT.

Une autre solution très simple consiste à placer un index.jsp dans ROOT qui redirige vers mon application de la manière suivante: response.sendRedirect ("/ MyApplicationXy");

Cordialement, Jan

2
Jan

J'ai un problème lorsque j'ai configuré Tomcat 'server.xml et ajouté un élément Context. Il ne veut tout simplement pas utiliser ma configuration: http://www.oreillynet.com/onjava/blog/2006/12/configuration_antipatterns_tom.html

Si vous êtes dans un système Unix-like:

  1. mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
  2. ln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOT

Terminé.

Travaille pour moi.

1
AC de Souza

Ultime moyen de changer l'application racine Tomcat. Testé sur Tomcat 7 et 8.

  1. Accédez au répertoire Tomapp webapps:

    Exemple sur ma machine: ~/stack/Apache-Tomcat/webapps

  2. Renommez, remplacez ou supprimez le dossier ROOT. Mon conseil est de renommer ou de créer une copie pour la sauvegarde. Exemple: renommez ROOT en RENAMED_ROOT:

    mv ROOT RENAMED_ROOT

  3. Déplacez le fichier war avec votre application dans le répertoire webapps de Tomcat (c’est un répertoire où se trouvait l’ancien dossier ROOT, sur ma machine: ~/stack/Apache-Tomcat/webapps)

Le fichier de guerre doit avoir un nom ROOT.war. Renommez votre application si c'est nécessaire: yourApplicationName.war -> ROOT.war

  1. Redémarrez Tomcat. Après le redémarrage, votre application sera une racine.
1
Jackkobec

Je vais regarder mes docs; Il existe un moyen de spécifier une configuration pour changer le chemin de l'application Web racine en l'éloignant de ROOT (ou ROOT.war), mais cela semble avoir changé entre Tomcat 5 et 6.

Trouvé ceci:

http://www.nabble.com/Re:-Tomcat-6-and-ROOT-application...-td20017401.html

Il semble donc qu'il soit possible de changer le chemin racine (dans ROOT.xml), mais un peu cassé: vous devez déplacer votre fichier WAR en dehors du répertoire de déploiement automatique. Pensez-vous que si je vous demande pourquoi renommer votre fichier en ROOT.war n’est pas une solution viable?

0
Don Werve

Ce n’est pas une très bonne solution, mais l’un des moyens consiste à rediriger l’application ROOT vers YourWebApp. Pour cela, vous devez modifier le fichier ROOT index.html.

<html>
    <head>
        <title>Redirecting to /YourWebApp</title>
    </head>
    <body onLoad="javascript:window.location='YourWebApp';">
    </body>
</html>

OR

<html>
    <head>
        <title>Redirecting to /YourWebApp</title>
        <meta http-equiv="refresh" content="0;url=YourWebApp" />
    </head>
    <body>
    </body>
</html>

Référence: http://staraphd.blogspot.com/2009/10/change-default-root-folder-in-Tomcat.html

0
abbas