2012-04-06 8 views
1

Die Anwendung wird auf Tomcat6 im Kontextpfad "/ environame/appname" implementiert.Wie definiere ich den Kontextpfad der Anwendung in Tomcat 6?

<Context 
... 
     path="/environame/appname" 
... 
</Context> 

Aber ich kann meine Anwendung mit folgenden URL nicht zugreifen:

http://localhost:8080/environame/appname

Ich habe Unterstrich anstelle von Schrägstrich zwischen "environame" und "appname".

http://localhost:8080/environame_appname

Tomcat 5 funktioniert anders.
Bei Tomcat 5 wird es nicht in der URL unterstreichen werden: meine Anwendung für den Zugriff auf mit Slash statt Strich

http://localhost:8080/environame/appname

Was soll ich in der Konfiguration meiner Anwendung oder Tomcat 6 ändern zwischen "environame" und "appname"?

UPDATE:

Pfad der Kontextpfad dieser Web-Anwendung, die vor dem Beginn jeder Anforderung angepasst ist die entsprechende URI Webanwendung zur Verarbeitung auszuwählen. Alle Kontextpfade innerhalb eines bestimmten Hosts müssen eindeutig sein. Wenn Sie einen Kontextpfad einer leeren Zeichenfolge ("") angeben, definieren Sie die Standardwebanwendung für diesen Host, der alle Anforderungen verarbeitet, die nicht anderen Kontexten zugewiesen sind.

Der Wert dieses Feld darf nicht außer eingestellt werden, wenn statisch einen Kontext in server.xml definieren, da es entweder für die XML-Kontext-Datei oder die docBase verwendet, um aus den Dateinamen abgeleitet werden.

http://tomcat.apache.org/tomcat-5.5-doc/config/context.html

Wir speichern Kontext XML-Datei auf $ CATALINA_HOME/conf/Catalina/localhost/environame_appname.xml Datei. Tomcat 5.0.28 verwendet das Pfadattribut des Context-Elements.
Tomcat 6 verwendet den Namen der Kontext-XML-Datei.
Ist es möglich, die Konfiguration zu ändern, um das Pfadattribut anstelle des Namens der xontext XML-Datei zu verwenden?

ANTWORT:
Es ist ein Fehler bug#46713

Wenn ein Pfad Attribut innerhalb des Kontext-Tag im Kontext xml der gesetzt ist es ignoriert. Stattdessen wird der Pfad auf "/" + gesetzt.Während es schön ist, dass sogar Pfade mit '/' können in den Dateinamen codiert werden durch Ersetzen von '/' mit '#' ist es sehr verwirrend, dass ein vorhandenes Pfadattribut einfach ignoriert wird.

Also, ich muss nur meine Kontext-XML-Datei in environame # appname.xml umbenennen.

Antwort

0

Vor langer Zeit (Tomcat 4 glaube ich) war es möglich, ein Kriegsarchiv mit dem Namen environame_appname.war bereitzustellen und tomcat über die URL environame/appname/... verfügbar zu machen. Ich bin mir nicht sicher, ob dies der Fall ist funktioniert immer noch (und hat noch keine Zeit, es zu testen). Tomcat ersetzt mit Schrägstrichen und Unterstrichen.

Eine andere Möglichkeit, Ihr Ziel zu erreichen, wäre die Verwendung von Apache und mod_proxy, mod_proxy_ajp (oder mod_proxy_html) und mod_rewrite. Dann können Sie zwei Anwendungen in tomcat (app01 und app02) definieren, eine Proxy-Regel definieren, die eine Anfrage an/app01 (resp/app02) an Ihren Tomcat weiterleitet, und eine Rewrite-Regel, die Anfragen nach/env01/app nach/app01 und/env02 umschreibt/app02 bis/app02.

+0

Ich habe festgestellt, dass Tomcat 6 den Dateinamen der Kontext-XML-Datei anstelle des Werts des Pfadattributs des Context-Elements verwendet. Wir speichern die Konfiguration von Context in der Datei environame_appname.xml. –

+0

Großartig. So funktioniert es immer noch. Es ist derselbe Mechanismus, der den Anwendungsnamen/Pfad aus dem Namen der Kontextdefinitionsdatei oder aus dem Namen der War-Datei definiert. – magomi

+0

Ich habe die Antwort gefunden. Bitte sehen Sie mein Update. –

Verwandte Themen