Tomcat 7中的会话和并行部署

时间:2014-12-29 04:12:07

标签: session tomcat tomcat7

关于并行部署,Tomcat 7 configuration reference说:

  

您可以同时部署具有相同上下文路径的多个Web应用程序版本。用于将请求与上下文版本匹配的规则如下:

     
      
  • 如果请求中不存在会话信息,请使用最新版本。
  •   
  • 如果请求中存在会话信息,请检查每个版本的会话管理器是否有匹配的会话,如果找到,请使用该版本。
  •   
  • 如果请求中存在会话信息但未找到匹配的会话,请使用最新版本。
  •   

我的问题有几个:

  1. 究竟是什么意思,“如果请求中没有会话信息”?这只是在请求中(或在URL中或在其配置的任何位置)查找jsessionid cookie?
  2. 我应该在哪个单位寻找请求与上下文匹配的位置?我一直在研究Tomcat 7.0源代码,但我无法看到这种情况发生在哪里。
  3. 有没有办法骗Tomcat关于会话信息的存在?我已经通过将请求的requestedSessionId设置为阀门中X-Auth-Token标题的内容而对Tomcat撒谎,但我怀疑这种情况发生得太迟,无法决定将请求发送给新的版本
  4. 如果没有办法欺骗Tomcat,自定义会话管理器是否可以解决问题?对我来说似乎不是这样,因为在没有咨询会话管理员的情况下回答请求中是否存在会话信息似乎是或否的问题。

1 个答案:

答案 0 :(得分:0)

如果将会话存储到memcached中并将sticky设置为false,则Tomcat不会自行处理会话,而是在每次必要时从memcached读取会话。

因此,Tomcat将取消部署旧版本,因为新版本已准备好而不检查会话,因为Tomcat不处理会话。

对我们来说这是一个非常有用的功能。当我们必须部署新版本时,我们不需要使用滚动升级和更改负载均衡器。