web-dev-qa-db-fra.com

Définition de l'application par défaut dans Tomcat 7

J'ai parcouru les fils qui décrivent comment configurer un WAR donné (disons abc.war) comme application web par défaut dans Tomcat.

Soit

Renommez abc.war en ROOT.war

ou

Créez un contexte ROOT.xml dans $ {Tomcat.home}/conf/Catalina/localhost avec path = "" et docBase défini sur le chemin relatif/absolu de la guerre (en gardant abc.war en dehors des webapps pour éviter un double déploiement).

Les deux solutions aboutissent à ROOT.war dans le répertoire webapps (appBase). Cependant, je souhaite conserver le nom WAR (abc.war) dans les applications Web et ne pas avoir de ROOT.war distinct pour y parvenir.

Une solution qui a fonctionné dans mon cas a été d'ajouter un contexte sous la balise <Host> dans server.xml. Mais selon Tomcat 7 Doc , il n'est pas recommandé d'ajouter du contexte directement dans server.xml.

Quelqu'un pourrait-il m'indiquer une alternative?

Merci.

13
Manish Mulani

approche détaillée

Première méthode:

éteignez d'abord votre Tomcat [à partir du répertoire bin (sh shutdown.sh)], vous devez alors supprimer tout le contenu de votre dossier d'applications Web Tomcat (rm -fr *) puis renommez votre fichier WAR en ROOT.war enfin démarrez votre Tomcat [à partir du répertoire bin (sh startup.sh)]

Deuxième méthode:

laissez votre fichier de guerre dans CATALINA_BASE/webapps, sous son nom d'origine - désactivez autoDeploy et deployOnStartup dans votre élément Host dans le fichier server.xml. définir explicitement tous les contextes d'application dans server.xml, en spécifiant à la fois le chemin et la 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 fichier server.xml.

Remarque:

que cette dernière méthode implique également que pour apporter des modifications à n'importe quelle application, vous devrez arrêter et redémarrer Tomcat.

Troisième méthode:

Placez votre fichier de guerre en dehors 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 fichier .xml, dans ce cas ROOT.xml. Voir le Context Conteneur ci-dessus pour plus de détails.

19
TheWhiteRabbit