Pages

mardi 26 juin 2012

Tomcat 7 fichier META-INF/context.xml non copié dans le répertoire conf/Catalina/localhost

J'ai observé une différence de comportement entre Tomcat 7 et Tomcat 6 sur la gestion du context d'une webapp. Pour rappel on peut définir son context applicatif en ajoutant un fichier META-INF\context.xml  dans le war de l'application.

Par exemple

<?xml version="1.0" encoding="UTF-8"?>
<Context  path="/mywebapp" unpackWAR="false">
  <ResourceLink global="jdbc/myWebAppDataSource" name="jdbc/dataSource" type="javax.sql.DataSource"/>
  <Loader className="org.apache.catalina.loader.VirtualWebappLoader" virtualClasspath="${catalina.home}/conf/mywebap"/>
</Context>

Tomcat 6 récupère ce fichier et le place dans le répertoire $CATALINA_BASE/conf/Catalina/[hostname]/. Tomcat 7 n'a pas le même comportement et ne copie pas automatiquement le fichier ce qui permet par exemple d'agir sur la configuration d'une webapp manuellement sans voir ses changements écrasés par Tomcat.

Le fichier placé dans le répertoire $CATALINA_BASE/conf/Catalina/[hostname]/ a toujours la précédence sur le fichier context.xml contenu dans le war. J'ai observé des problèmes d'accès au VirtualClasspath si ce fichier n'était pas déclaré dans $CATALINA_BASE/conf/Catalina/[hostname]/. 

Pour forcer Tomcat 7 a extraire le fichier context.xml contenu dans le war et le placer dans $CATALINA_BASE/conf/Catalina/[hostname]/ vous pouvez ajouter le paramètre copyXML lors de la configuration de votre [hostname] dans le répertoire $CATALINA_BASE/conf/server.xml

Par exemple

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


Aucun commentaire:

Enregistrer un commentaire

Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.