Ajout de ressources externes à class-path dans Tomcat 8

j'ai une application Tomcat qui doit faire référence à des fichiers de propriétés externes à L'application. En général, ceux-ci sont stockés sur une machine locale à un endroit spécifique comme C:PROJECT_NAMEconf .

dans Tomcat 7, cela était réalisable en plaçant un fichier context.xml à l'intérieur de /META-INF/ qui utilisait un VirtualWebappLoader pour essentiellement ajouter cet emplacement à la classe de la demande comme suit:

<Context>
    <Loader className="org.apache.catalina.loader.VirtaulWebappLoader"
        virtualClasspath="/PROJECT_NAME/conf"
        searchVirtualFirst="true" />
</Context>

comment réaliser la même chose dans Tomcat 8?

20
demandé sur Michael Landes 2014-04-18 01:22:29

3 réponses

il y a une section à ce sujet dans le Tomcat 8 migration guide qui vous dirigera à utiliser un resources configuration

en particulier, vous allez créer un objet WebResourceRoot qui contient le texte suivant dans sa description.

VirtualWebappLoader-remplacé par des ressources pré-et Post-mappées à WEB-INF / lib et WEB-INF / classes

votre nouveau contexte.xml ressemblera à quelque chose comme 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
répondu Michael Landes 2014-04-18 16:01:46

juste un autre exemple:

veuillez noter les commentaires à l'intérieur et noter que j'ai utilisé PostResources et non PreResources pour que je puisse outrepasser les classes dans mon projet actuel si Je ne suis pas satisfait de mon implémentation" util". Je ne suis pas vraiment sûr si JarResource est traité comme "PostResource" ou "PreResource" mais le fait de surcharger le contenu statique et les classes fonctionne.

    <!--
         https://tomcat.apache.org/tomcat-8.0-doc/config/resources.html
         /q/adding-external-resources-to-class-path-in-tomcat-8-28856/"/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
répondu NS du Toit 2016-07-23 20:33:25

copiez simplement les fichiers de propriété dans le dossier lib de Tomcat.

Ou d'améliorer conf/catalina.propriétés:commun.chargeur

avec un dossier pour les fichiers de propriété comme décrit ici:

comment ajouter des ressources externes (fichier de propriétés) sur classpath afin que war puisse lire?

0
répondu weberjn 2018-08-30 11:59:43