web-dev-qa-db-fra.com

Comment spécifier le chemin dans META-INF / context.xml pour Tomcat

J'utilise Tomcat 7 et je souhaite définir la racine de contexte d'un fichier war dans le fichier war lui-même et demander à Tomcat de se déployer automatiquement et de choisir ce chemin. Je pensais avoir trouvé le moyen de le faire en mettant un context.xml dans le répertoire META-INF de la guerre qui le contient.

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/somepath/myapp"/>

Mais cela ne semble pas fonctionner, je pense qu'il est chargé par http://Tomcat.Apache.org/Tomcat-7.0-doc/api/org/Apache/catalina/startup/SetContextPropertiesRule.html qui dit qu'il charge tout sauf le chemin!

Je sais que je peux nommer la guerre somepath # myapp.war et elle le reprendra, mais je déploie également sur weblogic qui n'est pas satisfait d'un nom comme celui-ci.

Existe-t-il un paramètre que je peux utiliser pour que le chemin fonctionne à partir du contexte.xml ci-dessus?

Merci David

13
David Kerwick

L'attribut Context path est ignoré sauf si le chemin est spécifié dans un Context codé en dur dans server.xml, ce qui est fortement déconseillé et ne prend pas les chemins à plusieurs niveaux.

Le nom du fichier war ou le nom du fichier xml de contexte dans Tomcat/conf/Catalina/hostname devient le path de l'application déployée.

Dans votre cas, le dernier des deux ci-dessus est la solution, assurez-vous simplement de mettre le .war fichier en dehors du appBase désigné pour l'hôte, ou vous déploierez l'application deux fois.

Dans: conf/Catalina/localhost/myapp#path.xml

<?xml version="1.0"?>
<Context docBase="/some/path/to/myapp.war">
</Context>
14
Pidster

Dans /Tomcat7/conf/server.xml, ajoutez les lignes ci-dessous à l'intérieur de l'élément et redémarrez Tomcat pour effectuer les modifications.

* remplacez "mycom" par le nom de votre application.

<Context path="" docBase="mycom">
  <!-- 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>

Cela fera apparaître l'application racine par défaut sous la racine de contexte "/ ROOT".

Maintenant, votre application est également accessible dans "/" et "/ mycom"!

2
user3774340

ajoutez copyXML = "true" à la configuration de l'hôte dans $ Tomcat_HOME/conf/server.xml comme

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true" copyXML="true">
1

Si vous chargez votre application.war dans un répertoire dont Tomcat n'est pas au courant, comment peut-il lire quoi que ce soit dans votre fichier war? L'endroit correct pour ajouter ces informations est dans $ Tomcat_HOME/conf/context.xml - cela fait partie de Tomcat et Tomcat peut lire ce fichier et savoir où se trouve votre application et la déployer. Il y a plus sur comment configurer JNDI dans Tomcat

0
Chris Malan