2014-10-22 67 views
0

环境 正常保值 - OpenJDK的1.7 - tomcat的7.0.55与本地连接器 - 阿帕奇2.4.10与MOD-JK 1.2.40是当Tomcat重启后JSESSIONID是创建

  1. 启动tomcat
  2. 客户端请求 - > JSESSIONID为null
  3. Tomcat的响应 - > JSESSIONID = C5EBF0AA96ADB34E0C28E4D9D2595D98是创建
  4. 刷新页面 - >会话属性(名称=计数,值=计数++)是正确的。计数正在增加。
  5. Tomcat的停止 - >开始(重新开始)范围内设置会话不是坚持
  6. 客户端刷新 - >客户端请求发送JSESSIONID = C5EBF0AA96ADB34E0C28E4D9D2595D98
  7. 会话属性(名称=计,值= 0)复位。但保留JSESSIONID

问题。 为什么tomcat使用JSESSIONID设置客户端请求值?是不是再生?

是这个java的规格?

谢谢。

+0

确定,Tomcat在第6步之后给予JSESSIONID,这是不能简单地认为是存储在客户端的cookie的JSESSIONID?尝试在执行步骤6之前删除所有Cookie,看看您是否仍然有这种行为。 – 2014-10-22 08:33:00

+0

如果我清除cookie或重新运行浏览器,当然客户端不会发送JSESSIONID。但是我保持浏览器页面即使是tomcat重启,浏览器在页面刷新时发送JSESSIONID。 和tomcat查找服务器会话,但该sessionid不存在。 所以我觉得tomcat会生成新的sessionid,并且对客户端做出响应,但是不会工作。 tomcat使用客户端请求的相同sessionid值。 – 2014-10-22 09:02:17

回答

1

我不认为它是在Java规范中,我认为它是某种优化方式:重新使用会话ID通常会减少生成的id的数量并尽管可能发生冲突。

但是,tomcat将只对存储在cookie中的sesionids做这件事(为安全目的, 有关详细信息,请参阅http://java.dzone.com/tips/turning-session-fixation)。

要真正找到一个地方的Tomcat 7并不这样看: http://grepcode.com/file/repo1.maven.org/maven2/org.apache.tomcat/tomcat-catalina/7.0.55/org/apache/catalina/connector/Request.java#2942

+0

谢谢。我找到了原因。 如果设置sessionCookiePath =“/”,那么tomcat通过请求的sessionid值创建新的会话。 thx很多! – 2014-10-23 08:54:29

相关问题