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?
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>
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>
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: