具有Redisson的Tomcat会话管理器

时间:2018-07-19 17:49:26

标签: 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项目中使用它作为会话管理器。我们正在尝试从传统的tomcat会话管理器过渡到基于redisson的tomcat会话管理器。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

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

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