Java 序列化ClassPathXmlApplicationContext

Java 序列化ClassPathXmlApplicationContext,java,spring,serialization,Java,Spring,Serialization,我将spring与另一个框架结合使用,我是序列化方面的新手 问题是什么: 我需要序列化包含org.eclipse.jetty.websocket.api.Session会话(不可序列化)的MyClass对象 问题是什么: 我从中了解到,可以使用不可序列化的字段序列化对象。但是,org.eclipse.jetty.websocket.api.Session并没有简单的类层次结构 但当我尝试这样做时,它抛出java.io.notserializableeexception:org.eclipse.j

我将spring与另一个框架结合使用,我是序列化方面的新手

问题是什么:

我需要序列化包含org.eclipse.jetty.websocket.api.Session会话(不可序列化)的MyClass对象

问题是什么:

我从中了解到,可以使用不可序列化的字段序列化对象。但是,org.eclipse.jetty.websocket.api.Session并没有简单的类层次结构

但当我尝试这样做时,它抛出java.io.notserializableeexception:org.eclipse.jetty.websocket.common.WebSocketSession

class MyClass {
 private transient ClassPathXmlApplicationContext  context; //NON-Serializable!

}

我认为如果ClassPathXmlApplicationContext是可序列化的,那就没有意义了,因为这样您就必须将在此上下文中创建的所有对象与上下文一起序列化。相反,您可以保存application.xml,然后从文件中读取它并从中重新创建ClassPathXmlApplicationContext。为了防止序列化上下文字段,您可以按照shamimz的建议将其设置为临时字段,或者在序列化MyClass实例之前将其设置为空值

您是否在变量之前尝试过transient关键字?我不太了解spring,但您可以序列化
MyClass
并使用
transient
关键字跳过上下文的序列化。反序列化时,可以从最初获取应用程序上下文的位置获取应用程序上下文。我希望有意义的添加部分,并修改代码。为什么会出现异常?序列化会话也没有意义。你应该重新考虑你的设计。对不起,我还有一个会话,必须序列化。不可能transient@Volodymyr是的,这就是重点。如果您将MyClass标记为可序列化,将上下文标记为瞬态,将会话标记为非瞬态,则可以保存MyClass的实例,它将保存会话,并且您只需在重新加载序列化的MyClass后重新创建上下文。保存MyClass的实例是什么意思?您的意思是将会话保存到文件,然后还原它吗?但是多进程和同步又如何呢?请给我一个小例子。会话也是非序列化的。对不起,我还有会话,必须序列化。它不能是暂时的这就是ClassPathXmlApplicationContext不可序列化的原因,因为out.writeObject(会话)没有意义;
class MyClass {
 private transient ClassPathXmlApplicationContext  context; //NON-Serializable!