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

Java tomcat中的空会话路径是什么?,java,tomcat,webserver,tomcat6,connector,Java,Tomcat,Webserver,Tomcat6,Connector,我前一天读过ApacheTomcat文档,对emptySessionPath感到非常困惑。据我所知,如果设置为true,则emptySessionPath存储在web应用程序的根文件夹中。请给出术语emptySessionPath的正确定义,如果设置为true和false会发生什么 请引导我。提前谢谢。您可能知道,会话通常由cookie维护。cookie有两个值,它们决定浏览器是否应该为某个请求返回cookieDomain和cookiePath。cookiePath必须与请求的路径匹配 请求

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


请引导我。提前谢谢。

您可能知道,会话通常由cookie维护。cookie有两个值,它们决定浏览器是否应该为某个请求返回cookieDomain和cookiePath。cookiePath必须与请求的路径匹配

请求

 /some/request/for/this.html
Cookie将返回Cookie路径:

 / 
 /some
 /some/request
 /other
但不适用于cookie路径:

 / 
 /some
 /some/request
 /other
根据规范,会话不会在不同的web应用程序之间共享,因此,如果在
/foo
下部署了web应用程序
foo.war
,则会话cookie路径默认设置为
/foo


它似乎是连接器上的受保护变量。我还没有读过代码——但我想这与Tomcat的单点登录或共享会话有关,您可以登录到一个上下文并在所有上下文中进行身份验证——在这种情况下,会话cookie的cookie路径必须是
/

emptySessionPath字段仅说明所有cookie是否应存储在根URL路径
/
(如果
emptySessionPath=true
)中(否则)

这是由Apache的连接器使用的。请参阅详细信息(这是针对AJP连接器,它是Connnector对象的一部分)

这基本上意味着:

如果在中启用了
emptySessionPath
tomcat,
JSESSIONID
cookie是 写入根“/”路径。这 意味着无论你在什么网络应用上 将使用相同的cookie。每个网络应用程序 将把cookie的值重新写入 保留该webapp的会话id,然后 他们都不一样

当启用此选项并启用servlet时 使用不同的Web应用程序、请求 从同一用户到不同用户 servlet最终将覆盖 cookie,这样当servlet 再次与它交互将创建 一个新的会话并将其释放 已经建立了

如果未设置
emptySessionPath
,则 浏览器中有多个cookie, 每个Web应用程序一个(当前无一个) 根),因此不同的Web应用程序不会 把彼此的曲奇写成 上面

JSESSIONID
是您的Web应用程序的ID会话。请看完整的解释


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

如果emptySessionPath设置为true,它将从JSSessionID cookie中删除上下文路径。它将cookie路径设置为/。此属性可用于跨应用程序自动验证机制。

以防万一,对于web应用程序3.0版,cookie配置是标准化的,因此与webapp 3.0中AJP的emptySessionPath等效的是:



/
正确



嗨,elite,请进一步解释如果未设置emptysessionpath会发生什么?@Muneeswaran Balasubramanian,如果您阅读我的第一个链接,默认值为
false
如果未设置。另外,请阅读被阻止部分的最后一段,它解释了是否未设置
emptySessionPath
。是的。我无法理解你在被阻止部分的最后一段,所以我只要求你进一步解释。在我的申请中,我在会话过期后发送了请求。如果该请求是http请求,则工作正常。但是如果该请求是Ajax请求,url已更改,但页面未加载。但在我设置emptysessionpath后,它是真的。一切正常。那么这两者之间会发生什么?请解释一下。Ajax不会重新加载页面,因为您正在对服务器进行异步调用,因此它从不重新加载页面。我真的无法解释为什么设置了
emptySessionPath
后一切都能正常工作。