Ответ 1
Вы можете установить любые системные свойства в
apache-tomcat-7.0.33\conf\catalina.properties
файл. Добавление вашей записи в этот файл должно решить вашу проблему.
например.
environment=local
У моего webapp проблемы с обновления до Tomcat 7. Мой сеанс пройдет null
после того, как я войду в систему и попытаюсь сделать что-либо (отправив запрос). Я прочитал, что может помочь следующее:
org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR=false
Кто-нибудь знает, где это установить? Должно ли это быть установлено в web.xml
, context.xml
или где-то еще?
Другое, что я хочу проверить, следующее:
org.apache.catalina.STRICT_SERVLET_COMPLIANCE
Вы можете установить любые системные свойства в
apache-tomcat-7.0.33\conf\catalina.properties
файл. Добавление вашей записи в этот файл должно решить вашу проблему.
например.
environment=local
Вы можете установить Свойства системы в Tom cat, создав файл setenv.sh в каталоге /bin. Для установки свойств системы я сделал следующее.
export JAVA_OPTS="-Dmyprojectvar.subname=value -Danothervariable=value -Danother.variable=value"
Помните:
Между export JAVA_OPTS
и =
нет пробела, а символ &
отличается, используйте .
.
Теперь запустите файл catalina.sh, чтобы запустить tomcat.
РЕШЕНИЕ:
sessionCookiePathUsesTrailingSlash="false"
Мы действительно выяснили, как это решить. Это была установка Tomcat 7, которую нам нужно было установить. Мы поместили его в server.xml
под тегом следующим образом:
<Context path="/test" reloadable="true" docBase="c:\webapp\test"
workDir="c:\webapp\test" sessionCookiePathUsesTrailingSlash="false"/>
Когда мы отлаживали проблему и просматривали путь к файлам cookie, мы заметили, что после имени webapp помещался обратный слэш \
, поэтому для нашего тестового webapp он устанавливал путь к /test/
вместо /test
. Это вызвало множество проблем.
Кто-нибудь еще должен был справиться с этой настройкой в Tomcat 7? Или есть аналогичная проблема?
Вы можете установить эти системные свойства в командной строке, которая запускает Tomcat. Например, вы можете иметь файл setenv.bat
(в setenv.sh
, если вы находитесь в linux) в папке Tomcats bin
со следующим содержимым:
set "CATALINA_OPTS=%CATALINA_OPTS% -Dfile.encoding=UTF8 -Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=true -Duser.timezone=GMT -Xmx1024m -XX:MaxPermSize=256m"
Этот файл является предпочтительным способом установки свойств для Tomcat.
Теперь FWD_SLASH_IS_SEPARATOR
по умолчанию установлен на false
. Если вы установите STRICT_SERVLET_COMPLIANCE
на true
, значение FWD_SLASH_IS_SEPARATOR
также будет установлено на true
(и значения некоторых других свойств). Однако вы можете явно установить его на false
, например. используя в файле setenv
следующее:
-Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=true
-Dorg.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR=false
Это также то, что я предлагаю, когда кто-то устанавливает STRICT_SERVLET_COMPLIANCE
в true
, чтобы всегда отключать FWD_SLASH_IS_SEPARATOR
. В противном случае значение пути cookie будет отправлено (например, "\"
), а все браузеры на сегодняшний день, кроме Opera, не распознают это и будут, например, не отслеживать сеанс.
Если вы пытаетесь установить переменные для сервера, работающего в eclipse: