web-dev-qa-db-fra.com

Ajout de ressources externes au chemin de classe dans Tomcat 8

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?

20
Michael Landes

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>
30
Michael Landes

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>
1
NS du Toit

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:

Comment ajouter des ressources externes (fichier de propriétés) sur le chemin de classe afin que war puisse lire?

0
weberjn