0

我们开发了一个应用程序,在成功请求后,会话必须被销毁。当我们有一个 tomcat 时,这工作正常。

但是,当我们在 Apache 简单负载均衡器下使用多个 tomcat 时,不会发生这种情况(我们正在使用负载均衡器,用于平衡托管同一应用程序的两个 tomcat 之间的请求)。

创建并成功处理的 SessionID 可用于另一笔交易,之后它会被杀死。

此外,SessionID 值附加了“n1”或“n2”(SessionID-n1)。我不确定为什么会这样。

请帮我解决这个问题。

我们有如下配置设置:

         Load Balancer
        /           \
    Cluster1      Cluster2
       |             |
    Tomcat1       Tomcat2

谢谢,桑迪普

4

1 回答 1

0

如果您已将每个 Tomcat 节点配置为具有“jvmRoute”,那么您在那里指定的字符串将附加到会话标识符中。这可以帮助您的负载均衡器确定应该使用哪个后端服务器来服务特定请求。听起来这正是您所做的。检查您的CATALINA_BASE/conf/server.xml文件以确认“jvmRoute”一词。

如果您只将会话用于单个事务,那么您为什么首先要费心创建会话?请求 == 交易吗?

如果您确定在事务完成时终止会话,即使客户端想要尝试使用相同的会话 ID 发出新请求,您也应该没问题。它将不再有效,因此对客户无用。

从您的问题中不清楚会话是否存在实际问题,因为您声称它正在“被杀死”,这听起来像您想要的那样。如果您提供有关会话到期的更多详细信息,我将相应地修改我的答案。

于 2014-05-08T15:00:38.857 回答