gpt4 book ai didi

java - 序列化 ClassPathXmlApplicationContext

转载 作者:行者123 更新时间:2023-12-02 06:47:34 26 4
gpt4 key购买 nike

我将 spring 与其他框架一起使用,并且我是序列化领域的新手。

问题是什么:

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

class MyClass {
private org.eclipse.jetty.websocket.api.Session session; //NON-Serializable!

private void writeObject(java.io.ObjectOutputStream out) throws IOException{
out.writeObject(session);
}

private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException {
session = (org.eclipse.jetty.websocket.api.Session) in.readObject();
}
}

问题是什么:

我已阅读 here可以使用不可序列化字段序列化对象。但是,org.eclipse.jetty.websocket.api.Session 具有不平凡的类层次结构。

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

最佳答案

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

关于java - 序列化 ClassPathXmlApplicationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18459816/

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