2012-03-01 13 views
22

Moja aplikacja internetowa ma problem od uaktualnienia do Tomcat 7. Moja sesja zakończy się po zalogowaniu i spróbuję zrobić wszystko (przesłanie prośby). Czytałem, że ustawiając następujące może pomóc:Tomcat 7 - gdzie mam ustawić "właściwości systemu"?

org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR=false 

Czy ktoś wie, gdzie to ustawić? Czy to powinno być ustawione w web.xml, context.xml lub gdzieś indziej?

Drugą rzeczą, którą chcesz sprawdzić, jest następujący:

org.apache.catalina.STRICT_SERVLET_COMPLIANCE 
+0

Przeczytałem następujące, http://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html i nie zobacz wszelkie informacje, gdzie to ustawić. Po prostu muszę wiedzieć, jak poprawnie ustawić, że FWD_SLASH_IS_SEPARATOR na false. – LuckY07

+0

Ponadto używamy środowiska Windows. – LuckY07

+0

@Michael - gdzie w RUNNING.txt wyświetla się GDZIE ustawić FWD_SLASH_IS_SEPARATOR? Czy odwołujesz się do tego, jak pokazuje, jak ustawić zmienne (w systemie Windows) na setenv.bat? – LuckY07

Odpowiedz

3

Rozwiązanie:

sessionCookiePathUsesTrailingSlash="false" 

My rzeczywiście zorientowali się, jak rozwiązać ten problem. To było ustawienie Tomcat 7, które musieliśmy ustawić. Umieściliśmy go w server.xml pod tagiem następująco:

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

Kiedy byliśmy debugowania problem i patrząc na ścieżce ciasteczka zauważyliśmy było oddanie \ odwrotny ukośnik po nazwie webapp, więc dla naszego testu webapp to ustawił ścieżkę na /test/ zamiast /test. To spowodowało mnóstwo problemów.

Czy ktoś jeszcze miał do czynienia z tym ustawieniem w Tomcat 7? Lub masz podobny problem?

3

Możesz ustawić te właściwości systemowe w wierszu poleceń, który uruchamia Tomcat. Na przykład, możesz mieć plik setenv.bat (na setenv.sh Jeśli jesteś na Linuksie) w Kocurek folderze bin o następującej treści:

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

Ten plik jest preferowany sposób ustawiania właściwości dla Tomcat.

Teraz FWD_SLASH_IS_SEPARATOR jest domyślnie ustawiony na false. Jeśli ustawisz STRICT_SERVLET_COMPLIANCE na true, wartość FWD_SLASH_IS_SEPARATOR będzie również ustawiona na true (i wartości niektórych innych właściwości). Możesz jednak ustawić go jawnie na false, np. przy użyciu następujących w pliku setenv jest w porządku:

-Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=true 
-Dorg.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR=false 

Jest to również co sugeruję, gdy ktoś ustawia STRICT_SERVLET_COMPLIANCE do true, aby zawsze wyłączać FWD_SLASH_IS_SEPARATOR. W przeciwnym razie wartość ścieżki pliku cookie zostanie wysłana jako cytowana (np. "\") i wszystkie przeglądarki od dzisiaj, z wyjątkiem Opery, nie rozpoznają tego i mogłyby np. nie można śledzić sesji.

25

można ustawić żadnej z właściwości systemowych w

apache-tomcat-7.0.33\conf\catalina.properties 

pliku. Dodanie wpisu do tego pliku powinno rozwiązać problem.

E.g.

environment=local 
10

Możesz ustawić Właściwości systemowe w Tomie kota, tworząc plik setenv.sh w katalogu/bin. Wykonałem następujące czynności, aby ustawić właściwości systemu.

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

Pamiętaj:

Nie ma przestrzeń pomiędzy export JAVA_OPTS i = i symbol & jest inny, należy ..

Uruchom teraz plik catalina.sh, aby uruchomić tomcat.

+2

Niestety, nie można w ten sposób ustawić ** tajnych ** wartości (np. Haseł zaufanych), nie ujawniając ich nikomu, kto może się zalogować i uruchomić "ps" lub przeczytać/proc/*/cmdline. Zdefiniowanie ich w catalina.properties pozwala uniknąć tego wycieku. Jest to jeden z powodów, dla którego używanie niestandardowych właściwości systemu do konfigurowania kodu serwletu to _bad idea_. Zamiast tego użyj parametrów kontekstowych. –

+1

Oprócz zastrzeżenia zgłoszonego przez @MarkWood technika ta będzie działać tylko wtedy, gdy Tomcat zostanie uruchomiony przy użyciu skryptów startowych. Jeśli używasz innego urządzenia do uruchamiania Tomcat (np. Jako "usługa" Microsoft Windows), skrypty takie jak 'bin/setenv.sh | bat' są ignorowane. Użycie opcji 'catalina.properties' zapewnia, że ​​właściwości systemu są ustawiane niezależnie od sposobu uruchomienia serwera Tomcat. –

1

Jeśli próbujesz ustawić zmienne dla serwera uruchomionego w Eclipse:

  1. Wybierz Run> Run Konfiguracje
  2. Upewnij się, że wybrany serwer
  3. Wybierz zakładkę Środowisko
  4. Kliknij „Nowy ", aby dodać nową zmienną
Powiązane problemy