java - 无法反序列化 Spring Session Scoped bean

我有以下 session 范围的 bean:

@ManagedBean
@Component
@Scope(proxyMode= ScopedProxyMode.TARGET_CLASS, value="session")
public class SessionData implements Serializable {}

我将 tomcat session 存储在数据库中。问题是,当应用程序尝试反序列化存储的 session 时,我收到以下错误:

 org.apache.catalina.session.PersistentManagerBase.swapIn Error deserializing Session EE913D2ACAD49EB55EDA657A54DFA2CB: {1}
 java.lang.ClassNotFoundException: de.myproject.SessionData$$EnhancerBySpringCGLIB$$768b59b9

似乎它实际上序列化了整个Spring上下文,并且服务器重新启动后显然没有这样的类de.myproject.SessionData$$EnhancerBySpringCGLIB$$768b59b9,所以我收到了上述异常。

有没有办法避免这种情况,以便正确序列化 session 范围的 bean?

更新:有一个 issue认为这是标记为已解决而没有评论,但我仍然面对它。

最佳答案

请试一试:

使用:import org.springframework.test.util.AopTestUtils;

 Serializable readyToSerialize = AopTestUtils.getUltimateTargetObject(yourInstance);

在序列化之前。

注意:这段代码对理解问题很有用,如果可以的话,你必须分析项目架构和依赖关系,以便更好地完成生产代码。首先,为什么需要序列化一个ScopedProxyMode.TARGET_CLASS

https://stackoverflow.com/questions/37212774/

相关文章:

java - 如何使用 Spring Data Pagination 在一页中获取所有结果

spring - 在 Spring 中使用 @PropertyResource 访问多个属性文件

spring - 在 Spring Boot 中从 FTP 发送和接收文件

java - 通过 Spring Config 扫描 Spring Data 存储库?

json - 406 Spring MVC Json,根据请求 "accept"headers No

java - 自定义 validator 消息 : Throwing exception in im

java - 返回一个列表,我已经有一个rowmapper实现

java - 如何使用modelAttribute在ajax(jquery)中提交spring表单

spring - 如何在 Spring 中通过 XML 定义 MySql 数据源 bean

java - 如何访问 Thymeleaf 模板中的系统属性?