嗨,我在我的 Spring 项目上配置了一个 Redis 以使用 Spring Session,我使用的是 Jedis 2.9.0,它运行良好。我遇到的问题是 Websphere 服务器上的 Sticky 会话,我们有 2 个主服务器和每个服务器的 10 个克隆,正常的 httpSession 它使用 cookie 再次处理该 cookie 对同一服务器的请求,很好,但是使用 Spring会话它不起作用。
Spring 使用名称“SESSION”创建 cookie,Websphere 的负载平衡不知道将请求重定向到哪里,因为会话不在 JVM 上,而是分布在 Redis 集群中。
例如,我需要(对于 log order porpuse)处理对服务器 1 clon 3 的 cookie“abc123”的每个请求,如果该应用程序的实例出现故障,则将该 cookie 跟踪到另一个实例并停留在该实例上,直到服务器运行再次关闭或用户注销...
在这里搜索和 Spring Session 文档,我发现了一些可能有用的东西,但我不知道它是如何工作的。
@Bean
public CookieSerializer cookieSerializer() {
DefaultCookieSerializer serializer = new DefaultCookieSerializer();
serializer.setCookieName("JSESSIONID");
serializer.setCookiePath("/");
serializer.setDomainNamePattern("^.+?\\.(\\w+\\.[a-z]+)$");
serializer.setJvmRoute("123");
return serializer;
}
属性 Jvm Route 为 cookie 添加了一个后缀,以了解处理该 cookie 的 JVM 是什么,但我不知道它是如何工作的,而且我没有幸运地找到有关它的示例或解释。
如果有人有我可以使用的答案或其他解决方法,那就太好了。