Kriegsdatei auf Tomcat mit einem anderen Pfad bereitstellen
Wenn ich die Bereitstellung einer war-Datei für Tomcat, genannt zum Beispiel foo-bar-1.1.2.Kriegwie kann ich bereitstellen, damit es entpackt wird webapps/bar und die URL-root ist /bar/...?
Mein Absicht hier zu halten, ist die war-Datei in das webapps-server mit der version Informationen, so dass ich weiß, welche version installiert ist, aber es überschreibt die Vorherige version der app.
Könnte ich implementieren Sie die war-Datei mithilfe PSI-Sonde. Dies würde mir erlauben, ein Ziel angeben Kontext für die web-app. Es bedeutet jedoch, dass ich verlieren würde die version Informationen, die in der war-Datei name.
InformationsquelleAutor der Frage z12345 | 2012-03-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tomcat wird immer extrahieren Sie den Inhalt der war-Datei in einen Ordner mit dem gleichen Namen (wenn es konfiguriert ist zum bereitstellen von kriegen - als Standard-etc.).
Können Sie extrahieren Sie es in einen Ordner mit dem Namen Ihrer Wahl. Also, wenn Sie entpacken Sie den Inhalt
foo.war
in einen Ordner namensbar/
manuell, anstatt nur darum, den Krieg in den web-Ordner "apps", es werde immer noch laden Sie die web-Anwendung.Dies ist jedoch völlig unnötig, da können Sie die URL-Muster für die Anwendung, ohne messing mit den Ordner - /war-Datei Namen durch überschreiben der Kontext-root-element für Ihre Anwendung:
Dies ist oft in der Tomcat -
server.xml
- aber, die Praxis ist ziemlich allgemein abgeraten. Stattdessen würde ich vorschlagen, Sie verwendencontext.xml
im META-INF-Ordner Ihres web-application - /war-Datei:Wenn die Anwendung bereitgestellt wird, die
context.xml
kopiert werden soll/conf/Catalina/localhost
aber umbenannt, umfoo.xml
Beachten Sie, dass conext Wurzeln müssen eindeutig sein und es gibt einige zusätzliche überlegungen, wenn Sie den
autoDeploy
oderdeployOnStartup
Operationen (Quelle http://tomcat.apache.org/tomcat-7.0-doc/config/context.html).Andere Optionen umfassen:
foo-1.1.0
Krieg.foo/version1
Konnte man auch mit Ant (oder einem ähnlichen tool) zur Automatisierung von Bereitstellungen (und führen Sie keine der oben genannten).
InformationsquelleAutor der Antwort Mikaveli
Es ist ein wichtiger Punkt zu betonen, über die
path
- Attribut des Kontext-fragment definition. Das zitieren der Dokumentation über das Thema:deployOnStartup
ist das Standard-Verhalten des Tomcat-hosts.Folgen der Dokumentation, dies hat eine sehr wichtige Konsequenz:
Entsprechend den Möglichkeiten der die Definition eines Tomcat-Kontextlässt dies nur zwei Lösungen:
In individual files (with a ".xml" extension) in the $CATALINA_BASE/conf/[enginename]/[hostname]/directory
Inside a Host element in the main conf/server.xml
was ist entmutigt Lösung in einer Produktionsumgebung, wie es erforderlich den server neu starten,Andere Lösung nutzt die
unpackWARs
- Attribut.In meiner Sicht, für diese Gründe, die Allgemeinen und die einfache Möglichkeit zur Implementierung einer subtilen Pfad in einer Produktionsumgebung nehmen advange der benennen von war-Dateien (was könnte gehören, Versionen-management und werden eine Lösung für Ihr problem). Ein einziges scharfes (z.B. test#Pfad.Krieg) in der war-Datei Namen impliziert ein segment in der Kontext-Pfad (z.B. /test/Pfad). Ein Doppel-sharp führt die Versionsnummer (z.B. test#Pfad##112.Krieg). Dies funktioniert unabhängig davon, ob oder nicht, Auspacken war-Dateien, hot-deployment oder nicht, ist die Bereitstellung Agnostiker (manager oder Datei-system) und schafft es Vielfache Versionen eines gleichen Archiv.
Aber wenn es die Notwendigkeit, einen Pfad haben, deutlich von den Archiv-Namen, scheint es die einzige Lösung ist der Deskriptor in der
/conf/[enginename]/[hostname]/
Verzeichnis oder dieserver.xml
- Datei. Für diese, benötigen Sie einen Zugriff auf das server-Dateisystem.Die Lösung ist stark verbunden mit der Art von Tomcat wird konfiguriert und verwaltet in den Alltag.
InformationsquelleAutor der Antwort bdulac
Wenn Sie nur wollen, um eine version info in Ihrer war-Datei-Namen, Sie können es benennen wie:
my-app##1.2.3.war
. Es wird entpackt in das Verzeichnismy-app##1.2.3
aber der Zusammenhang wird nurmy-app
(d.h. http://host/my-app/).Funktioniert zumindest bei Tomcat 7.0.55
InformationsquelleAutor der Antwort Peter Clause