vto*_*tor 15 java session spring spring-mvc
我有以下会话作用域bean:
@ManagedBean
@Component
@Scope(proxyMode= ScopedProxyMode.TARGET_CLASS, value="session")
public class SessionData implements Serializable {}
Run Code Online (Sandbox Code Playgroud)
我将tomcat会话存储在数据库中.问题是,当应用程序尝试反序列化存储的会话时,我收到以下错误:
org.apache.catalina.session.PersistentManagerBase.swapIn Error deserializing Session EE913D2ACAD49EB55EDA657A54DFA2CB: {1}
java.lang.ClassNotFoundException: de.myproject.SessionData$$EnhancerBySpringCGLIB$$768b59b9
Run Code Online (Sandbox Code Playgroud)
它似乎实际上序列化了整个Spring上下文,显然de.myproject.SessionData$$EnhancerBySpringCGLIB$$768b59b9
在服务器重启后没有这样的类,所以我收到了上述异常.
有没有办法避免这种情况,以便会话范围的bean正确序列化?
更新:有一个问题关于这个标记为没有评论的解决,但我仍然面对它.
拥有一个具有范围会话的 bean 并不意味着该 bean 是可序列化的并且可以存储在会话中。
从类的名称中可以猜到,代理类是在运行时生成的,并且在每次启动时具有不同的名称。这解释了为什么反序列化时会出现问题。
我猜您尝试将此 SessionData 添加为网络会话的属性。你不应该。将 POJO 数据存储在 Web 会话中,而不使用 beans。
如果您使用该 bean 来注入数据库连接或类似对象,请忘记它。您可以仅将会话范围 bean 用于特定上下文,我猜这不符合您的要求。
归档时间: |
|
查看次数: |
894 次 |
最近记录: |