J'essaie de changer l'application par défaut d'un serveur Web Tomcat 6 en une autre application que "ROOT" (dans le dossier webapps). Quelle est la meilleure façon de procéder?
J'essaie de changer l'application par défaut d'un serveur Web Tomcat 6 en une autre application que "ROOT" (dans le dossier webapps). Quelle est la meilleure façon de procéder?
Réponses:
Il existe trois méthodes:
Arrêtez d'abord votre Tomcat depuis son bin
répertoire ( sh shutdown.sh
). Supprimez ensuite tout le contenu de votre webapps
dossier Tomcat ( rm -fr *
). Renommez ensuite votre fichier WAR ROOT.war
et démarrez enfin votre Tomcat à partir du bin
répertoire ( sh startup.sh
).
Laissez votre fichier war $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 à la fois les attributs path
et docBase . Vous devez le faire car vous avez désactivé tous les mécanismes de déploiement automatique de Tomcat et Tomcat ne déploiera plus vos applications à moins qu'il ne trouve leur contexte dans le server.xml
.
deuxième méthode: pour apporter des modifications à une application, vous devrez arrêter et redémarrer Tomcat.
Placez votre fichier WAR à l'extérieur de $CATALINA_BASE/webapps
(il doit être à l'extérieur pour éviter un double déploiement). Placez un fichier de contexte nommé ROOT.xml
dans $CATALINA_BASE/conf/
. L'élément unique de 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 .xml
fichier, dans ce cas ROOT.xml
. Consultez la documentation du conteneur Contexte pour plus de détails.
$CATALINA_BASE/conf/[enginename]/[hostname]
répertoire (ce qui est pour ma configuration plutôt basique $CATALINA_HOME/conf/Catalina/localhost
). Reportez-vous à la documentation Conteneur de contexte .
sudo systemctl start tomcatx
où x
représente le numéro de version
L'ajout d'une <Context>
balise dans la <Host>
balise server.xml
pour Tomcat 6 résoudra le problème.
Si vous utilisez path=""
vide, vous pouvez utiliser une URL comme http://localhost/first.do
.
Dans la balise de contexte, définissez les attributs docBase="E:\struts-ITRCbook\myStrutsbook"
et reloadable="true"
, puis terminez 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>
Dans Tomcat 7 avec ces changements, je peux accéder myAPP
à /
et ROOT
à/ROOT
<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>
Ajoutez ci-dessus à la <Host>
section dans server.xml
/ROOT
et que j'essaie de me connecter à la page du gestionnaire en utilisant les informations d'identification correctes, l'accès me est refusé. Sauriez-vous comment résoudre ce problème?
L'application par défaut de ROOT est généralement Tomcat Manager - ce qui peut être utile, alors j'avais envie de la garder.
Donc, la façon dont j'ai fait mon application ROOT et gardé TCmgr était comme ça.
renommé ROOT en autre chose
mv ROOT TCmgr
puis créé un lien symbolique par lequel ROOT pointe vers l'application que je souhaite définir par défaut.
ln -s <your app> ROOT
a fonctionné pour moi et semblait l'approche la plus simple.
Selon la documentation Apache Tomcat, vous pouvez modifier l'application en créant un fichier ROOT.xml. Voir ceci 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 appelé ROOT.xml."
Vous pouvez le faire de manière légèrement hack-y en:
Une solution alternative serait de créer un servlet qui envoie une redirection vers l'application Web par défaut souhaitée et de mapper ce servlet à 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");
}
}
Ajoutez 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 pour vous permettre de définir l'application Web par défaut sans avoir à modifier la source.
Je ne sais pas si cela aurait des implications négatives, mais j'ai testé cela et cela semble fonctionner.
la configuration context.xml n'a pas fonctionné pour moi. Tomcat 6.0.29 se plaint que la docBase se trouve à l'intérieur de l'appBase: ... Pour Tomcat 5, cela a fonctionné.
Une solution consiste donc à placer l'application dans le dossier ROOT.
Une autre solution très simple est de mettre un index.jsp à ROOT qui redirige vers mon application comme ceci: response.sendRedirect ("/ MyApplicationXy");
Meilleures salutations, janv.
J'ai un problème lors de la configuration de Tomcat server.xml
et de l'ajout d'un élément de contexte. 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 Unix-like
système:
mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
ln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOT
Terminé.
Travaille pour moi.
Le moyen ultime de changer l'application racine de Tomcat. Testé sur Tomcat 7 et 8.
Accédez au répertoire tomcat webapps:
Exemple sur ma machine: ~/stack/apache-tomcat/webapps
Renommez, remplacez ou supprimez le dossier ROOT. Mon conseil est de renommer ou de créer une copie pour la sauvegarde. Exemple renommer ROOT en RENAMED_ROOT:
mv ROOT RENAMED_ROOT
Déplacez le fichier war avec votre application vers le répertoire tomcat webapps (c'est un répertoire où se trouvait l'ancien dossier ROOT, sur ma machine: ~ / stack / apache-tomcat / webapps)
Le fichier War doit avoir un nom ROOT.war . Renommez votre application si nécessaire: yourApplicationName.war -> ROOT.war
Je vais regarder mes documents; il existe un moyen de spécifier une configuration pour changer le chemin de l'application Web racine loin 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
Donc, il semble que changer le chemin racine (dans ROOT.xml) soit possible, mais un peu cassé - vous devez déplacer votre WAR en dehors du répertoire de déploiement automatique. Cela me dérange si je demande pourquoi le simple fait de renommer votre fichier en ROOT.war n'est pas une solution viable?
Ce n'est pas une très bonne solution, mais une solution consiste à rediriger de l'application ROOT vers YourWebApp. Pour cela, vous devez modifier le ROOT index.html.
<html>
<head>
<title>Redirecting to /YourWebApp</title>
</head>
<body onLoad="javascript:window.location='YourWebApp';">
</body>
</html>
OU
<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
Dans Tomcat 7 (sous le serveur Windows), je n'ai rien ajouté ni modifié dans aucun fichier de configuration. J'ai juste renommé le dossier ROOT en autre chose et renommé mon dossier d'application en ROOT et cela a bien fonctionné.