it-swarm.com.de

Tomcat 7 - Wo stelle ich 'Systemeigenschaften' ein?

Seit meiner Aktualisierung auf Tomcat 7 gibt es bei meiner Webapp ein Problem. Meine Sitzung wird null, nachdem ich mich angemeldet habe und versucht habe, irgendetwas zu tun (eine Anfrage zu senden). Ich habe gelesen, dass folgende Einstellung hilfreich sein kann:

org.Apache.Tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR=false

Weiß jemand, wo man das einstellen soll? Soll dies in web.xml, context.xml oder an anderer Stelle eingestellt werden?

Die andere Sache, die ich überprüfen möchte, ist folgende:

org.Apache.catalina.STRICT_SERVLET_COMPLIANCE
27
LuckY07

Sie können alle Systemeigenschaften in festlegen 

Apache-Tomcat-7.0.33\conf\catalina.properties

datei. Das Hinzufügen Ihres Eintrags in dieser Datei sollte Ihr Problem beheben.

Z.B.

environment=local
33
user2335780

Sie können die Systemmerkmale in Tomcat festlegen, indem Sie eine setenv.sh-Datei im Verzeichnis/bin .. anlegen.

export Java_OPTS="-Dmyprojectvar.subname=value -Danothervariable=value -Danother.variable=value"

Merken:

Zwischen export Java_OPTS und = ist kein Leerzeichen. Auch: das Symbol & ist anders, verwenden Sie ..

Führen Sie nun Ihren catalina.sh aus, um Tomcat zu starten.

12

Sie können diese Systemeigenschaften in der Befehlszeile festlegen, mit der Tomcat gestartet wird. Beispielsweise können Sie die Datei setenv.bat (auf setenv.sh, wenn Sie mit Linux arbeiten) im Tomcat-bin-Ordner mit folgendem Inhalt haben:

set "CATALINA_OPTS=%CATALINA_OPTS% -Dfile.encoding=UTF8 -Dorg.Apache.catalina.STRICT_SERVLET_COMPLIANCE=true -Duser.timezone=GMT -Xmx1024m -XX:MaxPermSize=256m"

Diese Datei ist eine bevorzugte Methode zum Festlegen von Eigenschaften für Tomcat.

Jetzt ist FWD_SLASH_IS_SEPARATOR standardmäßig auf false eingestellt. Wenn Sie STRICT_SERVLET_COMPLIANCE auf true setzen, wird der Wert von FWD_SLASH_IS_SEPARATOR ebenfalls auf true (und auf einige andere Eigenschaften) gesetzt. Sie können es jedoch explizit auf false setzen, z. In Ihrer setenv-Datei können Sie Folgendes verwenden:

-Dorg.Apache.catalina.STRICT_SERVLET_COMPLIANCE=true
-Dorg.Apache.Tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR=false

Dies ist auch, was ich vorschlage, wenn jemand STRICT_SERVLET_COMPLIANCE auf true setzt, um den FWD_SLASH_IS_SEPARATOR immer zu deaktivieren. Andernfalls wird der Cookie-Pfadwert in Anführungszeichen gesendet (z. B. "\"), und alle Browser, mit Ausnahme von Opera, erkennen dies heute nicht und würden z. kann die Sitzung nicht verfolgen.

5
igr

DIE LÖSUNG:  

sessionCookiePathUsesTrailingSlash="false"

Wir haben tatsächlich herausgefunden, wie wir das lösen können. Es war eine Tomcat 7-Einstellung, die wir einstellen mussten. Wir haben es in server.xml unter dem Tag wie folgt platziert:

<Context path="/test" reloadable="true" docBase="c:\webapp\test" 
workDir="c:\webapp\test" sessionCookiePathUsesTrailingSlash="false"/>

Beim Debuggen des Problems und beim Betrachten des Cookies-Pfads stellten wir fest, dass hinter dem Namen der webapp ein \-Backslash eingefügt wurde. In unserer Test-Webapp wurde der Pfad auf /test/ anstelle von /test festgelegt. Dies führte zu einer Reihe von Problemen.

Hat sich in Tomcat 7 noch jemand mit dieser Einstellung befassen müssen? Oder ein ähnliches Problem haben?

3
LuckY07

Wenn Sie versuchen, Variablen für einen Server festzulegen, der in Eclipse ausgeführt wird:

  1. Wählen Sie Run> Run Configurations
  2. Stellen Sie sicher, dass Ihr Server ausgewählt ist
  3. Wählen Sie die Registerkarte Umgebung
  4. Klicken Sie auf 'Neu', um eine neue Variable hinzuzufügen
1
Brent Sandstrom