Tomcat 7 - 在哪里设置“系统属性”?

问题描述 投票:0回答:6

自从升级到 Tomcat 7 以来,我的 Web 应用程序出现了问题。在我登录并尝试执行任何操作(提交请求)后,我的会话将继续

null
。我读到设置以下内容可能会有所帮助:

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

有人知道在哪里设置吗?应该设置在

web.xml
context.xml
还是其他地方?

我想检查的另一件事如下:

org.apache.catalina.STRICT_SERVLET_COMPLIANCE
apache session tomcat tomcat7
6个回答
44
投票

您可以在

中设置任何系统属性
apache-tomcat-7.0.33\conf\catalina.properties

文件。在此文件中添加您的条目应该可以解决您的问题。

例如

environment=local

19
投票

您可以通过在 /bin 目录中创建

setenv.sh
文件来设置 Tomcat 中的系统属性。 我执行了以下操作来设置系统属性。

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

记住:

export JAVA_OPTS
=
之间没有空格。另外:符号
&
不同,请使用
.

现在,运行

catalina.sh
来启动 tomcat。


5
投票

您可以在启动 Tomcat 的命令行中设置这些系统属性。例如,您可以在 Tomcats

setenv.bat
文件夹中包含文件
setenv.sh
(如果您使用的是 Linux,则在
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
投票

解决方案:

sessionCookiePathUsesTrailingSlash="false"

我们实际上已经找到了解决这个问题的方法。这是我们需要设置的 Tomcat 7 设置。我们把它放在

server.xml
,标签下,如下:

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

当我们调试问题并查看 cookies 路径时,我们注意到它在 web 应用程序名称后面添加了

\
反斜杠,因此对于我们的测试 web 应用程序,它将路径设置为
/test/
而不是
/test
。这导致了一系列问题。

还有其他人必须在 Tomcat 7 中处理此设置吗?或者有类似的问题?


1
投票

如果您尝试为 Eclipse 中运行的服务器设置变量:

  1. 选择运行 > 运行配置
  2. 确保选择您的服务器
  3. 选择环境选项卡
  4. 单击“新建”添加新变量

0
投票

当使用 Apache Commons Daemon Service Runner (

Tomcat.exe
) 在 Windows 上运行 Tomcat 时,
setenv.bat
会被忽略(请参阅
RUNNING.txt
第 3.4 节)。

您可以使用 Tomcat Properties 程序设置系统属性。

图形用户界面

  1. 奔跑
    Tomcatw.exe
  2. 转到 Java 选项卡
  3. 使用格式 -D{key}={value}
     将系统属性键值对插入到 
    Java Options
  4. 文本框中
  5. 点击应用
  6. 重启Tomcat服务
Tomcat Properties

注册表

如果您不想使用 GUI,此文本将保留在注册表项

Options
HKLM\SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\Tomcat\Parameters\Java
值中(在 x64 Windows 上)。

© www.soinside.com 2019 - 2024. All rights reserved.