Tomcat 7 - где я могу установить «системные свойства»? - PullRequest
27 голосов
/ 01 марта 2012

У моего веб-приложения возникла проблема с момента обновления до Tomcat 7. Мой сеанс будет проходить null после того, как я войду в систему и попытаюсь что-либо сделать (отправив запрос). Я читал, что настройка может помочь следующее:

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

Кто-нибудь знает, где это установить? Должно ли это быть установлено в web.xml, context.xml или где-то еще?

Другая вещь, которую я хочу проверить, следующая:

org.apache.catalina.STRICT_SERVLET_COMPLIANCE

Ответы [ 5 ]

35 голосов
/ 15 мая 2013

Вы можете установить любое из системных свойств в файле

apache-tomcat-7.0.33\conf\catalina.properties

.Добавление вашей записи в этот файл должно решить вашу проблему.

Например

environment=local
12 голосов
/ 03 июня 2014

Вы можете установить системные свойства в Tomcat, создав файл setenv.sh в каталоге / bin. Я сделал следующее, чтобы установить системные свойства.

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

Помните:

Между export JAVA_OPTS и = нет пробела. Также: символ & отличается, используйте ..

Теперь запустите catalina.sh, чтобы запустить кота.

5 голосов
/ 11 апреля 2013

Вы можете установить эти системные свойства в командной строке, которая запускает 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, не распознают это и, например, не удается отследить сеанс.

3 голосов
/ 02 марта 2012

РЕШЕНИЕ:

sessionCookiePathUsesTrailingSlash="false"

Мы действительно выяснили, как это решить. Это была настройка Tomcat 7, которую нам нужно было установить. Мы поместили его в server.xml под тегом:

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

Когда мы отлаживали проблему и смотрели путь к cookie-файлам, мы заметили, что после имени веб-приложения ставится обратная косая черта \, поэтому для нашего тестового веб-приложения он устанавливает путь к /test/ вместо /test. Это вызвало кучу проблем.

Кто-нибудь еще имел дело с этим параметром в Tomcat 7? Или есть похожая проблема?

1 голос
/ 23 января 2017

Если вы пытаетесь установить переменные для сервера, работающего в eclipse:

  1. Выберите «Выполнить»> «Выполнить конфигурации»
  2. Убедитесь, что ваш сервер выбран
  3. Вкладка «Выбор среды»
  4. Нажмите «Создать», чтобы добавить новую переменную
...