Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring会话Redis无法反序列化,ClassNotFoundException_Java_Spring_Spring Boot_Redis_Spring Session - Fatal编程技术网

Java Spring会话Redis无法反序列化,ClassNotFoundException

Java Spring会话Redis无法反序列化,ClassNotFoundException,java,spring,spring-boot,redis,spring-session,Java,Spring,Spring Boot,Redis,Spring Session,我有两个典型的Spring Boot应用程序,它们共享一个Redis实例作为会话状态。上述错误在尝试登录到我的应用程序时立即发生 我不太清楚这里发生了什么-两个应用程序对适用的用户模型和Spring依赖项使用相同的库和版本。值得一提的是,CurrentUser扩展了org.springframework.security.core.userdetails.User,它本身是可序列化的 我重新启动了我的Redis实例,认为有些东西变得很古怪,但事实并非如此。我会展示我已经尝试过的东西,但主要是确保

我有两个典型的Spring Boot应用程序,它们共享一个Redis实例作为会话状态。上述错误在尝试登录到我的应用程序时立即发生

我不太清楚这里发生了什么-两个应用程序对适用的用户模型和Spring依赖项使用相同的库和版本。值得一提的是,CurrentUser扩展了org.springframework.security.core.userdetails.User,它本身是可序列化的

我重新启动了我的Redis实例,认为有些东西变得很古怪,但事实并非如此。我会展示我已经尝试过的东西,但主要是确保我的工件被正确构建,并重新启动应用程序和Redis服务器,还有一点玩弄
Serializable


为什么我会看到这个

异常显示“无法反序列化” 看起来您在Redis中存储了一些现在无法反序列化的内容。 您可以同时更改serialVersionUID吗


我看到您重新启动了Redis,但可能是条目被持久化并在重新启动后幸存了?

当您将数据存储到Redis时,只需在对象类中键入它,当您从Redis取回数据时,只需将其作为对象。然后将其键入您拥有的任何POJO类中。在我的情况下是有效的。 存储时->

org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; 
  nested exception is org.springframework.core.serializer.support.SerializationFailedException:

Failed to deserialize payload. Is the byte array a result of corresponding serialization for DefaultDeserializer?; 
  nested exception is org.springframework.core.NestedIOException:

Failed to deserialize object type; 
  nested exception is java.lang.ClassNotFoundException: com.foo.user.model.CurrentUser
redisTemplate.opsForHash().put(“,”,(Object)empList);
获取时->

redisTemplate.opsForHash().put("<YOUR-key>", "<YOUR-field>",(Object) empList);
对象employeeFromCache=operation.get(“,”); employees=(列表)employeeFromCache;
CurrentUser的所有成员是否都可以序列化?几个问题:两个应用程序中的Redis配置(更具体地说是序列化部分)是否相同?如果我理解正确,
CurrentUser
位于两个应用程序共享的外部库中?您正在使用引导开发工具吗?对于这两个应用程序来说,重现问题或至少是配置中最相关部分的示例将非常有用。维德兰-什么信息对你有帮助?@BrandonV你能解决这个问题吗?我面临着同样的问题:/@varunkr我确实解决了这个问题,但不幸的是,我记不起是什么解决了这个问题。对不起,我会给你支票的。AWS Elasticache完全有可能允许数据在重新启动后继续存在。对象确实改变了,但我希望重新启动会刷新商店。运气不好。重新创建群集并解决同一问题。还有其他想法吗?检查与反序列化时使用的编解码器/序列化是否不同。
Object employeeFromCache=operation.get("<YOUR-key>", "<YOUR-field>");
        employees=(List<Employee>)employeeFromCache;