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
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>
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"!
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">
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