java - 带有 redisson 的 Tomcat session 管理器

标签 java tomcat redis 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:无限递归(StackOverflowError)(通过引用链:java.util.LoaderReference["cacheKey"]->java.util.CacheKey[ “loaderRef”]

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

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

最佳答案

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

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

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

关于java - 带有 redisson 的 Tomcat session 管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51429011/

相关文章:

redis - 如何使用 txredis 编写用于客户端服务器通信的异步扭曲应用程序

redis - 尝试将 : Changing . NET 标准库的依赖项解析为 NET Core - Microsoft.Extensions.Primitives

java - 如何使用当前日期作为函数输入获取月份名称

java - 使用 hamcrest 比较包含另一个对象列表的对象列表

java - 整数除法 : Why is the result of 1/3 == 0?

java - 编写客户端在 spring boot 中连接到 websocket

java - 无法运行Java Spark Hive示例

java - 通过 Tomcat 进行 SQL Server Windows 身份验证

tomcat - 达到一定限制时如何轮换Tomcat日志文件

ruby - 在/workers : wrong number of arguments for 'exists' command 处请求运行时错误