J'ai une application Tomcat qui doit référencer certains fichiers de propriétés externes à l'application. Généralement, ceux-ci sont stockés sur une machine locale à un emplacement spécifique tel que C:\PROJECT_NAME\conf\
.
Dans Tomcat 7, cela était possible en plaçant un fichier context.xml
à l'intérieur de /META-INF/
qui utilisait une VirtualWebappLoader
pour essentiellement ajouter cet emplacement au chemin de classe de l'application, comme suit:
<Context>
<Loader className="org.Apache.catalina.loader.VirtaulWebappLoader"
virtualClasspath="/PROJECT_NAME/conf"
searchVirtualFirst="true" />
</Context>
Comment puis-je obtenir la même chose dans Tomcat 8?
Il existe une section à ce sujet dans le guide de migration Tomcat 8 qui vous indiquera comment utiliser une configuration resources .
En particulier, vous allez créer un objet WebResourceRoot qui contient le texte suivant dans sa description.
VirtualWebappLoader - Remplacé par les pré et post-ressources mappées sur WEB-INF/lib et WEB-INF/classes
Votre nouveau fichier context.xml ressemblera à ceci:
<Context>
<Resources className="org.Apache.catalina.webresources.StandardRoot">
<PreResources className="org.Apache.catalina.webresources.DirResourceSet"
base="C:\\PROJECT_NAME\\conf"
internalPath="/"
webAppMount="/WEB-INF/classes" />
</Resources>
</Context>
Juste un autre exemple:
Veuillez noter les commentaires à l'intérieur et notez que j'ai utilisé PostResources
et non PreResources
afin de pouvoir remplacer les classes de mon projet actuel si je ne suis pas satisfait de mon implémentation "util". Je ne sais pas vraiment si JarResource
est traité comme un "PostResource" ou un "PreResource", mais le remplacement du contenu statique et des classes fonctionne.
<!--
https://Tomcat.Apache.org/Tomcat-8.0-doc/config/resources.html
http://stackoverflow.com/questions/23143697/adding-external-resources-to-class-path-in-Tomcat-8
http://stackoverflow.com/questions/34515852/Tomcat-7-application-migration-to-Tomcat-8
http://mikusa.blogspot.co.za/2014/07/tips-on-migrating-to-tomat-8-resources.html
-->
<Context path="/MY_PROJECT" docBase="/MY_PROJECT">
<Resources className="org.Apache.catalina.webresources.StandardRoot">
<!-- Post-load the static content from my util project -->
<PostResources className="org.Apache.catalina.webresources.DirResourceSet"
base="/workspace/MY_UTIL_PROJECT/WebContent"
webAppMount="/">
</PostResources>
<!-- Post-load the classes from my util project -->
<PostResources className="org.Apache.catalina.webresources.DirResourceSet"
base="/workspace/MY_UTIL_PROJECT/WebContent/WEB-INF/classes"
webAppMount="/WEB-INF/classes">
</PostResources>
<!-- Load the JARs contained within my util project -->
<JarResources className="org.Apache.catalina.webresources.DirResourceSet"
base="/workspace/MY_UTIL_PROJECT/WebContent/WEB-INF/lib"
webAppMount="/WEB-INF/lib">
</JarResources>
</Resources>
</Context>
Copiez simplement les fichiers de propriétés dans le dossier Tomcat lib.
Ou améliorer conf/catalina.properties: common.loader
avec un dossier pour les fichiers de propriétés comme décrit ici: