【问题标题】:Tomcat session manager with redisson带 redisson 的 Tomcat 会话管理器
【发布时间】:2018-12-27 23:12:44
【问题描述】:

尝试使用 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 会话管理器。任何帮助将不胜感激。

【问题讨论】:

    标签: java tomcat redis redisson


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 2021-10-10
      • 2014-08-24
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多