我们开发了一个应用程序,在成功请求之后,必须销毁会话。当我们有一个tomcat时,这工作正常。
但是,当我们在Apache简单负载均衡器下使用多个tomcats时,我们不会发生这种情况(我们正在使用Load Balancer,用于平衡托管同一应用程序的两个tomcats之间的请求)。
创建并成功处理的SessionID可用于另一个事务,之后它将被杀死。
此外,SessionID值附加了'n1'或'n2'( SessionID-n1 )。我不确定为什么会这样。
请帮我解决此问题。
我们的配置设置如下:
Load Balancer
/ \
Cluster1 Cluster2
| |
Tomcat1 Tomcat2
谢谢, 和Sandeep
答案 0 :(得分:0)
如果已将每个Tomcat节点配置为具有“jvmRoute”,则您在其中指定的字符串将附加到会话标识符。这可以帮助您的负载均衡器确定应该使用哪个后端服务器来为特定请求提供服务。听起来这正是你所做的。检查CATALINA_BASE/conf/server.xml
文件中的“jvmRoute”字样以确认。
如果您只将会话用于单个事务,那么为什么还要首先创建会话呢?是请求==交易吗?
如果您确定在事务完成时终止会话,即使客户端想要尝试使用相同的会话ID创建新请求,您也应该没问题。它将不再有效,因此对客户无用。
从您的问题中不清楚会话是否存在实际问题,因为您声称它“被杀”,这听起来像您想要的那样。如果您提供有关会话到期事项的更多详细信息,我将相应地修改我的答案。