我有以下 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表单