Tomcat 带有 redisson 的会话管理器

Tomcat session manager with redisson

正在尝试使用 Redisson 配置我的 JavaEE web 项目。

  1. 在 Docker 容器中安装 Redis,它工作正常。

  2. 经历了https://github.com/redisson/redisson/tree/master/redisson-tomcat 配置我的 tomcat.

当我尝试 运行 项目时,它抛出以下错误:

java.lang.IllegalArgumentException: com.fasterxml.jackson.databind.JsonMappingException: 无限递归(WhosebugError)(通过引用链:java.util.LoaderReference["cacheKey"]->java.util.CacheKey["loaderRef"]

我从各处阅读发现它与使用 jackson 序列化具有双向关系的 Java 对象有关。但是这个项目太大了,有太多的对象被序列化,很难确定问题可能出在哪里。

我对 redisson 比较陌生,不知道还需要做什么才能在我现有的 javaEE 项目中将它用作会话管理器。我们正在尝试从传统的 tomcat 会话管理器转移到基于 redisson 的 tomcat 会话管理器。任何帮助将不胜感激。

我开始使用@JsonIgnore 删除双向关系,但双向关系太多,我觉得使用 jackson 进行序列化是在浪费我的时间。 因此,我将编解码器从 jackson 更改为 JDK 序列化编解码器,经过几个问题后项目运行良好。

在 redisson.yml 文件 add/change 下面的行:

codec: !<org.redisson.codec.SerializationCodec> {}