2

嗨,我在我的 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 是什么,但我不知道它是如何工作的,而且我没有幸运地找到有关它的示例或解释。

如果有人有我可以使用的答案或其他解决方法,那就太好了。

4

0 回答 0