Wie kann ich mehrere Kontexte derselben Kriegsdatei in Jetty zuordnen?

8

Ist es möglich, mehrere ContextPaths in Jetty einer WAR-Datei zuzuordnen? Zum Beispiel

%Vor%

Und dann hätte ich gerne zwei verschiedene Kontexte, die auf diesen Krieg hinweisen. Der Grund dafür sind Konfigurationsunterschiede, je nachdem, welche URL erreicht ist.

%Vor%     
Loc Nguyen 21.06.2011, 03:41
quelle

3 Antworten

3

Hier ist, wie ich es gemacht habe, und ich wurde auch verschiedene SSL-Zertifikate für jede Seite eingerichtet (nicht gezeigt). Ich behaupte nicht, alles zu verstehen, was ich weiß, aber das funktioniert für mich in mehreren Installationen. Sie benötigen für jede Instanz eine Datei "jetty.xml" und eine Datei "contexts.xml".

Angenommen, Anlegestelle ist in / opt / Jetty installiert ...

Starten Sie zwei Instanzen des Servers, die auf zwei Versionen von jetty.xml verweisen (dies kann in einem einzigen Skript geschehen, wie gezeigt, oder in zwei separaten Start-Skripten).

start.sh ...

%Vor%

Wenn Sie einen Server mit mehreren IPs haben, können Sie die context.xml-Dateien verwenden, um verschiedene IPs oder Hostnamen im Connector-Bereich jeder jetty.xml-Datei anzugeben. Wenn Sie nur eine IP-Adresse haben, verwenden Sie die Einstellung für den Kontextpfad in Kontext-XML, um zwischen den beiden Instanzen zu unterscheiden.

in der Datei jetty.xml finden Sie im ip oder host und im -Verzeichnis für die erste Instanz die Datei context.xml :

%Vor%

in der Datei jetty.xml finden Sie auf der IP oder dem Host und im Verzeichnis , das die context.xml für die zweite Instanz enthält:

%Vor%

Wenn Sie wie oben gezeigt definiert haben, können Sie die WAR-Datei erneut laden und die Anwendung durch Berühren der XML-Kontextdatei neu starten.

Legen Sie separate Kontextdateien in separaten Unterverzeichnissen des Kontextverzeichnisses ab, die jeweils auf die gleiche WAR-Datei zeigen, jedoch unterschiedliche Kontextpfade und unterschiedliche virtuelle Hosts.

/opt/Jetty/contexts/subdirectory_for_first_instance/context_first.xml
/opt/Jetty/contexts/subdirectory_for_second_instance/context_second.xml

in context_first.xml - Sie können einen Knoten (firstapp) angeben, der immer mit Ihrer ersten App verknüpft wird

%Vor%

in context_second.xml - Sie können einen Knoten (firstapp) angeben, der immer mit Ihrer zweiten App verknüpft wird

%Vor%

(Das obige ist notwendig (zwei verschiedene Kontextpfade), wenn Sie sie von derselben IP ausführen wollen, glaube ich)

Definieren Sie dann die zwei virtuellen Hosts (müssen die URL, die vom Browser verwendet wird) in den separaten Kontextdateien:
In context_first.xml:

%Vor%

Und in context_second.xml

%Vor%

Hinweis: Wenn Sie zwei IPs oder Hostnamen haben, können Sie den Kontextpfad beider Apps auf "/" festlegen Wenn Sie nur eine IP haben, bestimmt der Kontextpfad, auf welche Anwendung zugegriffen wird

Sie können auch Kontextparameter an Ihre Anwendung senden, damit diese bei Bedarf feststellen kann, welche Instanz sie ist.

Beispiel für Kontextparameter, um eindeutige Werte für jede Instanz zu senden:

%Vor%     
user906398 22.08.2011 20:37
quelle
0

Sie könnten einfach die WAR-Datei kopieren und umbenennen.

    
Daan 03.07.2011 10:19
quelle
0

Mir ist klar, dass das alt ist, aber da die Antworten die Frage nicht wirklich beantworten, können Sie für zukünftige Referenz mehrere WebappContext s mit demselben .war erreichen, indem Sie id attribute zu Configure . %Vor%

Beachten Sie jedoch, dass alle Benennungsressourcen, die im Kontext definiert sind, dem Kontext entweder mit

zugewiesen werden müssen %Vor%

Wenn Sie dbcp pooling resource "pg_conn" haben, ohne das Arg mit dem Verweis auf die ID von WebappContext (in diesem Fall entweder "magaginesContext" oder "booksContext"), wird die Ressource global definiert, dh die Letzter geladener WebAppContext gewinnt.

Nehmen Sie zum Beispiel die folgende Definition WebappContext , wobei "pg_conn" global definiert ist:

%Vor%

und dieser, wo es für die Instanz von WebappContext definiert ist:

%Vor%     
Matt 29.04.2013 11:31
quelle

Tags und Links