tomcat中的空会话路径是什么?

时间:2010-12-02 06:33:52

标签: java tomcat webserver tomcat6 connector

前一天我读过apache tomcat文档,我对emptySessionPath感到很困惑。据我所知,如果设置为true,emptySessionPath将存储在Web应用程序的根文件夹中。请给出emptySessionPath这个术语的正确定义,如果设置为true和false会发生什么?

请指导我。谢谢。

4 个答案:

答案 0 :(得分:7)

emptySessionPath字段只是说明是否应将所有Cookie存储在根网址路径/中(如果emptySessionPath=true)或不存在(否则)。

Apache的连接器使用它。查看详细信息here(这适用于AJP Connector,它是Connnector对象的一部分)。

这基本上意味着:

  

如果启用了emptySessionPath   tomcat,JSESSIONID cookie是   写入根“/”路径。这个   意味着你所使用的任何webapp   将使用相同的cookie。每个webapp   将重新写入cookie的值   保持该webapp的会话ID,和   他们都是不同的。

     

启用此功能后,将使用servlet   使用不同的webapps,请求   从同一个用户到另一个用户   servlet最终会覆盖   cookie,以便当servlet是   再次与它互动将创造   一个新的会话并松开会话   已经成立了。

     

如果未设置emptySessionPath,则存在   是浏览器中的多个cookie,   每个webapp一个(没有   root),所以不同的webapps不是   将对方的cookie重写为   上方。

JSESSIONID是您的Webapp的ID会话。请参阅完整说明here

更新:有关用法的信息有些过时 - 有关如何为最近的tomcat设置会话路径的更多最新信息,请参阅here

答案 1 :(得分:5)

如果emptySessionPath设置为true,它将从JSESSIONID cookie中删除上下文路径。它将设置一个cookie路径到/。该属性可用于跨应用程序的身份验证机制。

答案 2 :(得分:4)

您可能知道会话通常由cookie维护。 Cookie有两个值,用于确定浏览器是否应为特定请求 cookieDomain cookiePath 返回它们。 cookiePath 必须与请求的匹配。

请求

 /some/request/for/this.html

Cookie将以cookie路径返回:

 / 
 /some
 /some/request

但不适用于cookie路径:

 /other

按规范,不同的Web应用程序之间不会共享会话,因此如果您在foo.war下部署了Web应用程序/foo,则会话cookie路径默认设置为{{1} }。

似乎Connector.emptySessionPath是Connector上的受保护变量。我还没有读过代码 - 但我想这与Tomcat的单点登录或共享会话有关,你登录到一个上下文并在所有情况下进行身份验证 - 在这种情况下,cookie路径必须是/foo用于会话cookie。

答案 3 :(得分:0)

以防万一,对于web_app 3.0版,cookie配置是标准化的,所以相当于webapp 3.0中AJP的emptySessionPath是:

<会话配置>
    < cookie的配置>
      <路径> /< /路径>
      <安全>真< /安全>
    < / cookie的配置>
  < /会话配置>