Wie kann ich die Karte mehrere Kontexte die gleiche war-Datei im Tomcat?
Ich bin mit tomcat bereitstellen, meine Anwendungen, ich würde mich gerne bereitstellen als einen einzigen Krieg, sollte in der server mehrere Kontext-Pfade.
Derzeit habe ich app1.Krieg und app2.Krieg, aber beides hat den gleichen Inhalt nur mit anderen Namen, um den Zugriff über http:///app1 und http:///app1.war. Aber ich würde dies gerne tun, Bereitstellen von app.Krieg und greifen Sie von beiden app1 und app2 Kontext-Pfad. Ist es möglich tomcat? Bitte helfen Sie mir aus dieser
Sollte es immer noch die gleichen Web-App (sharing lokalen Daten) oder sollte die webapps wirklich werden separate Instanzen?
InformationsquelleAutor Selvakumar Ponnusamy | 2012-07-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies kann auf verschiedene Arten erfolgen. Ich denke, dass dieser Weg der einfachste:
webapps/
auto-deploy-VerzeichnisMETA-INF/context.xml
aus Ihre war-Datei. Wenn Ihr KRIEG haben nicht einMETA-INF/context.xml
- Datei, nutzen Sie einfach eine Datei mit dem nichts aber<Context />
im esconf/[service]/[host]/
Verzeichnis wie die beidenapp1.xml
undapp2.xml
. ([Service] ist in der Regel "Catalina" und der [host] ist das, was der name des virtuellen host ist: auf einem Standard-Tomcat-Konfiguration hostname ist immer "localhost").app1.xml
undapp2.xml
und legen Sie diedocBase
Attribut für die<Context>
element zu zeigen, um die war-Datei, die Sie verschoben haben, in Schritt #1Dies sollte Ihnen eine einzige körperliche war-Datei und mehreren Kontexten eingesetzt von es.
Obwohl Tomcat unterstützt diese Konfiguration, ich empfehle dagegen: Speicherplatz ist Billig, es ändert sich nichts an der Laufzeit (Sie bekommen immer noch zwei Kopien von allem, was im Speicher ist), und du verlierst die Flexibilität der Bereitstellung unterschiedliche war-Dateien in unterschiedlichen Kontexten und/oder aktualisieren Sie separat ohne änderung der Konfiguration von beide Kontexten.
Wenn Sie wollen, mein Rat, bleib zu duplizieren war-Dateien.
Solche Kriege kann entpackt werden, aber Sie haben, entpacken Sie Sie selbst. Es ist möglich, per Skript alle diese, natürlich.
Sie müssen missverstanden haben entweder die Frage oder die Antwort, oder beides, dann. Teilen Sie eine war-Datei zwischen unterschiedlichen Kontexten immer noch bekommt man zwei komplett getrennte
ClassLoader
s und eine ganze (wörtlich) Haufen von Daten, die getrennt für jeden Kontext, die Bereitstellung. Sie retten nicht ein einziges byte des JVM-Speichers durch den Austausch einer war-Datei zwischen verschiedenen Kontexten. Daher mein Kommentar zu "disk space [wird] Billig zu haben."Gut, es ist Recht. Traurig 🙁
Ich weiß nicht... der Speicher ist ziemlich Billig, auch. Ihre Anwendung Speicher sollte dominiert werden, indem Objekte, die Ihre Anwendung erstellen, auch nicht durch Darstellungen von
Class
Objekte im Speicher in einemClassLoader
. Also eine Verdoppelung der heap-Größe, die durch die Bereitstellung eines zweiten Kontext sollte nicht viel von einem Unterschied.InformationsquelleAutor Christopher Schultz