gpt4 book ai didi

java - Spring Session Redis 无法使用 ClassNotFoundException 反序列化

转载 作者:可可西里 更新时间:2023-11-01 11:31:19 28 4
gpt4 key购买 nike

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

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

我不太确定这里发生了什么 - 两个应用程序都对适用的用户模型和 Spring 依赖项使用相同的库和版本。对于它的值(value),CurrentUser 扩展了 org.springframework.security.core.userdetails.User,它本身是 Serializable

我已经重新启动了我的 Redis 实例,认为有些事情变得很时髦,但事实并非如此。我会展示我已经尝试过的内容,但主要是确保我的工件构建正确并重新启动应用程序和 Redis 服务器,并稍微尝试一下 Serializable

为什么我会看到这个?

最佳答案

当发件人服务器与接收服务器不同(单独的服务器)时,您很可能会收到此错误

问题来自 ValueSerializer

为避免此问题,请使用 Jackson2JsonRedisSerializer 作为发送方和接收方的值序列化程序

    @Bean
protected RedisTemplate<String, Object> redisTemplate() {
final RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));
.........
return template;
}

这样序列化过程将基于 json 而不是基于类

关于java - Spring Session Redis 无法使用 ClassNotFoundException 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39908279/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com