wake-up-neo.com

Hinzufügen von externen Ressourcen zum Klassenpfad in Tomcat 8

Ich habe eine Tomcat-Anwendung, die einige Eigenschaftsdateien referenzieren muss, die sich außerhalb der App befinden. Im Allgemeinen werden diese auf einem lokalen Computer an einem bestimmten Ort wie C:\PROJECT_NAME\conf\ gespeichert.

In Tomcat 7 konnte dies erreicht werden, indem eine context.xml-Datei in /META-INF/ eingefügt wurde, die eine VirtualWebappLoader verwendete, um diesen Ort im Wesentlichen wie folgt zum Klassenpfad der Anwendung hinzuzufügen:

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

Wie erreiche ich dasselbe in Tomcat 8?

20
Michael Landes

Dazu gibt es einen Abschnitt im Tomcat 8 Migrationshandbuch , der Sie anweist, eine resources Konfiguration zu verwenden

Insbesondere erstellen Sie ein WebResourceRoot - Objekt, das in seiner Beschreibung den folgenden Text enthält.

VirtualWebappLoader - Ersetzt durch Vor- und Nachressourcen, die den Klassen WEB-INF/lib und WEB-INF/zugeordnet sind

Ihre neue context.xml sieht ungefähr so ​​aus:

<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

Nur ein weiteres Beispiel:

Bitte beachten Sie die Kommentare und beachten Sie, dass ich PostResources und nicht PreResources verwendet habe, um Klassen in meinem aktuellen Projekt zu überschreiben, wenn ich mit meiner "util" -Implementierung nicht zufrieden bin. Ich bin mir nicht sicher, ob JarResource als "PostResource" oder "PreResource" behandelt wird, aber statische Inhalte und Klassen überschreiben.

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

Kopieren Sie einfach die Eigenschaftendateien in den Tomcat-Ordner lib.

Oder verbessern Sie conf/catalina.properties: common.loader

mit einem Ordner für die Eigenschaftsdateien wie hier beschrieben:

Wie füge ich dem Klassenpfad externe Ressourcen (Eigenschaftendatei) hinzu, damit der Krieg lesen kann?

0
weberjn