Kann ich das erstellen einer benutzerdefinierten Klassenpfad auf einer pro Anwendung Grundlage in Tomcat
Für einige Anwendungen, die ich ZK, die anderen Überwintern, andere Apache Commons, etc.
Möchte ich nicht bereitstellen, 75MB war-Datei, nur weil es verwendet eine Vielzahl von Bibliotheken.
Möchte ich nicht hinzufügen der Bibliotheken zu meinem tomcat-lib-Ordner, oder noch in den Klassenpfad Konfiguration wie kann ich eine alte Anwendung mit der Bibliothek x.1 und einer anderen Anwendung mithilfe der Bibliothek x.2
Aus diesem Grund wäre es toll, etwas zu haben, in der web.xml oder context.xml wo ich sage so etwas wie:
<classpath>/usr/local/tomcat/custom-libs/zk-5.0.4</classpath>
Hinweis: Die oben genannten pseudo-code
InformationsquelleAutor der Frage Spider | 2011-06-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom Tomcat 7 es gibt keine Erwähnung der nicht in der Lage zu verwenden, die VirtualWebappLoader in der Produktion. Ich versuchte es und es funktioniert wie ein Traum. Fügen Sie einfach die folgenden META-INF/context.xml:
In Netbeans unter Verpackung, die ich nur deaktivieren Sie alle Pakete, die Einnahme der .Krieg-Größe nach unten zu nichts, stellen Sie sicher, dass die Abhängigkeiten sind in den richtigen Ordnern auf dem server und hochladen. Yey! Nicht mehr als 100 MB war-Datei.
InformationsquelleAutor der Antwort Spider
Neben @Spider Antwort.
Tomcat Kontext halten Lader element. Nach docs deployment-Deskriptor (was in
<Context>
- tag) platziert werden können, in:$CATALINA_BASE/conf/server.xml
- bad - erfordern einen server-Neustart, um zu Lesen config$CATALINA_BASE/conf/context.xml
- bad - in allen Anwendungen$CATALINA_BASE/work/$APP.war:/META-INF/context.xml
- bad - Umpacken erforderlich, um die Konfiguration ändern$CATALINA_BASE/work/[enginename]/[hostname]/$APP/META-INF/context.xml
- schönaber siehe Letzte option!!$CATALINA_BASE/webapps/$APP/META-INF/context.xml
- schönaber siehe Letzte option!!$CATALINA_BASE/conf/[enginename]/[hostname]/$APP.xml
- besten - komplett aus der Anwendung und automatisch auf änderungen überprüft!!!Hier meine config, die zeigen, wie man mit der Entwicklerversion der project-Dateien aus
$CATALINA_BASE
Hierarchie (beachten Sie, dass ich diese Datei insrc/test/resources
dir und intruct Maven Vorverarbeiten${basedir}
Platzhalter durchpom.xml
<filtering>true</filtering>
so nach und nach bauen Sie in der neuen Umgebung, die ich kopieren$CATALINA_BASE/conf/Catalina/localhost/$APP.xml
):UPDATE Tomcat 8 ändern Sie die syntax für
<Resources>
und<Loader>
Elemente, entsprechend Teil jetzt so Aussehen:InformationsquelleAutor der Antwort gavenkoa
Anderen ein bisschen hacky alternative.
Schreiben Sie eine 5-6-line custom class loader abgeleitet von urlclassloaderund fügt einfach den classpath-jars mit addUrl() Methode.
Dann legen Sie es als context-class-loader der thread in Ihrer Anwendung code.
wo parent-class-loader wird in der Regel
InformationsquelleAutor der Antwort Fakrudeen
Dies ist, was die META-INF/context.xml die Datei kann verwendet werden für. Sie definiert Ihre eigenen WebappLoader, die Lasten Klassen für Ihre spezielle webapp. Dies ist die Referenz, die ich verwendet: http://tomcat.apache.org/tomcat-5.5-doc/config/loader.html (Edit: für Tomcat 6: http://tomcat.apache.org/tomcat-6.0-doc/config/loader.htmlfür Tomcat 7: http://tomcat.apache.org/tomcat-7.0-doc/config/loader.html)
Auch dieser Bursche hier scheint die post eine Lösung für Ihr problem genauer (Beispiel): http://java.dzone.com/articles/extending-tomcat-webapploader
InformationsquelleAutor der Antwort Nick