2012-07-30 5 views
12

Ich benutze Tomcat, um meine Anwendungen zu implementieren, ich würde gerne als ein einziger Krieg bereitstellen, um mehrere Kontextpfade zu unterhalten.Wie kann ich mehrere Kontexte derselben Tomcat-War-Datei zuordnen?

Zur Zeit habe ich app1.war und app2.war, aber beide hat den gleichen Inhalt nur Name ist anders als der Zugriff über http: /// app1 und http: ///app1.war. Aber ich möchte dies tun, app.war bereitstellen und auf den Kontextpfad app1 und app2 zugreifen. Ist es möglich, in Tomcat zu tun? Bitte helfen Sie mir aus diesem

+1

Sollte es immer noch dieselbe Webapp sein (die gleichen lokalen Daten teilen) oder sollten die Webapps wirklich separate Instanzen sein? – Daniel

Antwort

20

Dies kann auf verschiedene Arten geschehen. Ich denke, diese Art und Weise die einfachste ist:

  1. Verschieben Sie die WAR-Datei außerhalb des webapps/ Auto-deploy
  2. Extract META-INF/context.xml von WAR-Datei. Wenn Ihr WAR keine META-INF/context.xml Datei nicht haben, verwenden Sie nur eine Datei mit nichts als <Context /> darin
  3. Kopieren Sie diese Datei in das Tomcat conf/[service]/[host]/ Verzeichnis als beide app1.xml und app2.xml. (Der [Dienst] ist normalerweise "Catalina" und der [Host] ist wie auch immer der Name Ihres virtuellen Hosts lautet: Bei einer Standard-Tomcat-Konfiguration ist der Hostname immer "localhost").
  4. bearbeiten beide app1.xml und app2.xml und stellen Sie die docBase Attribut für das <Context> Element zur WAR-Datei, die Sie in Schritt # Punkt bewegt 1
  5. Re-Start Tomcat

Dies sollte Ihnen einen einzigen physischen geben WAR-Datei und mehrere davon bereitgestellte Kontexte.

Obwohl Tomcat diese Konfiguration unterstützt, empfehle ich dagegen: Speicherplatz ist billig, ändert nichts zur Laufzeit (Sie erhalten immer noch zwei Kopien von allem im Speicher), und Sie verlieren die Flexibilität der Bereitstellung verschiedener WAR-Dateien in verschiedenen Kontexten und/oder aktualisieren sie separat, ohne die Konfiguration von beide Kontexte zu ändern.

Wenn Sie meinen Rat brauchen, halten Sie sich an WAR-Dateien duplizieren.

+0

Ich denke, ich stimme der Beibehaltung doppelter WARs zu, aber ich bin in einer ähnlichen Situation und stelle fest, dass es sehr ordentlich ist, ein einziges Artefakt zu haben, das durch eine Pipeline mit kontinuierlicher Lieferung geht. Es ist auch erwähnenswert, dass, wenn Sie WARs außerhalb der Host-AppBase setzen, sie nicht entpackt werden können (ab Tomcat v7), also wenn Sie eine App haben (wie ich, leider), die Entpacken erfordert, ist das oben nicht eine Option. – Conan

+1

Solche WARs * können entpackt werden, aber Sie müssen sie selbst entpacken. Es ist natürlich möglich, dies alles zu schreiben. –