0

尝试使用 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:无限递归(StackOverflowError)(通过引用链:java.util.LoaderReference["cacheKey"]->java.util.CacheKey["loaderRef"]

通过从这里和那里阅读,我发现它与使用杰克逊序列化具有双向关系的 Java 对象有关。但是这个项目是如此之大,并且有如此多的对象被序列化,以至于很难确定问题可能来自哪里。

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

4

1 回答 1

0

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

在 redisson.yml 文件中添加/更改以下行:

codec: !<org.redisson.codec.SerializationCodec> {}
于 2018-08-27T17:27:49.090 回答