2009-08-13 4 views
0

Ist es möglich, mehrere Kontextpfade für eine einzelne Webanwendung anzugeben? Zum Beispiel habe ich eine Tomcat-Anwendung myapp, die auf Port 8080 läuft. Ich möchte dies mit Apache so vor, dass localhost/app1 oder localhost/app2 beide auf myapp in tomcat geroutet werden, um dies zu erreichen? Ich möchte nicht verwenden a redirectApache tomcat fronting

Antwort

1

Nein. Es gibt keine Möglichkeit, zwei Pfade für die gleiche App zu definieren. Sie können 2 Pfade für denselben WAR angeben, aber es sind immer noch 2 Instanzen derselben Anwendung.

Sie können jedoch Ihre Anwendung als ROOT definieren und den Pfad in Ihrem Code überprüfen. Zum Beispiel, setzen Sie Ihre Anwendung in webapps/ROOT und fügen Sie diese Logik zu Ihrer Servlets

String path = request.getPathInfo(); 

if (path.indexOf("/app1") >= 0) 
    app1(request, response); 
else if (path.indexOf("/app2") >= 0) 
    app2(request, response); 
+0

Hallo Danke für die Antwort. Aber ich möchte meine Anwendung nicht ändern, aber httpd.conf so ändern, dass es die Anfrage an Tomcat leitet –

0

Ja, Sie, dass auf Ihrer Apache Web Server-Einstellung tun. Diese Option ist für Tomcat nicht relevant. Sie können dies auf jedem Anwendungsserver hinter Apache Web Server tun, sei es Tomcat, Jetty oder sogar ein anderer Apache Web Server, auf dem PHP-Skripte oder statische Seiten laufen.

Die tatsächliche Einstellung hängt davon ab, mit welcher Methode Sie den Apache Web Server mit Tomcat verbinden.

Zum Beispiel, wenn Sie mod_proxy verwenden, die Konfiguration wie folgt aussehen:

ProxyPass /app1 http://192.168.11.25:8080/myapp 
ProxyPassReverse /app1 http://192.168.11.25:8080/myapp 
ProxyPass /app2 http://192.168.11.25:8080/myapp 
ProxyPassReverse /app2 http://192.168.11.25:8080/myapp 

Ich habe gerade versucht, auf meinem Rechner über die Einstellung der gleichen WebDAV Subversion in 2 verschiedenen Front URL zu belichten.

Ob Ihre Anwendung dies tatsächlich unterstützt, das ist eine andere Geschichte. Wenn Ihre Anwendung die Front-URL angeben muss und Sie mod_proxy z. Installieren von Anwendungen wie Atlassian Confluence, wird dies überhaupt nicht funktionieren. Wenn Ihre Anwendung das nicht benötigt, wird das gut.

Aber Sie können immer zu niedrigeren Ebene gehen, indem Sie eine komplexe URL Rewrite (mod_rewrite) erstellen, die in der Lage sein sollte, dies ebenfalls zu umgehen.

Eine andere Sache, auf die Sie achten sollten, ist die Art, wie Ihre Anwendung Sitzung, URL, IP-Adresse usw. verarbeitet. Wenn dies nicht unterstützt wird und Sie die Anwendung nicht ändern können, stecken Sie fest.