我有使用acgi 安全性进行身份验证的spring应用程序,我还使用了许多过滤器和拦截器,它在单个主机上运行良好。现在我想使用tomcat在集群中运行我的应用程序,并使用apache服务器的负载平衡。现在,当我在集群中运行我的应用程序时,它在使用stickySession 模式时工作正常,但是当我使用多播时,它不允许登录并且总是重定向到登录页面。
我不是在猜测为什么会出现这个问题。
我有使用acgi 安全性进行身份验证的spring应用程序,我还使用了许多过滤器和拦截器,它在单个主机上运行良好。现在我想使用tomcat在集群中运行我的应用程序,并使用apache服务器的负载平衡。现在,当我在集群中运行我的应用程序时,它在使用stickySession 模式时工作正常,但是当我使用多播时,它不允许登录并且总是重定向到登录页面。
我不是在猜测为什么会出现这个问题。
Spring Security 的 Security Context 作为值存储在会话中。因此,如果您的会话跨节点复制,那么上下文也将可用,如果您使用的是棒会话,那么请求将命中相同的上下文,因此它可以工作。多播不是即时的,可能是无法在多播模式下工作的原因之一。
我不确定这是否可行,但您可以在数据库中使用会话持久性并跨节点共享,这将比会话复制具有优势,但我认为坚持会话将是我认为的最佳选择。
1) http://www.intelligrape.com/blog/2010/07/21/tomcat-6-session-persistence-through-jdbcstore/ 2) tomcat 文档