代码之家  ›  专栏  ›  技术社区  ›  Manjoor

在会话中存储对象

  •  1
  • Manjoor  · 技术社区  · 15 年前

    @PersistenceCapable(identityType = IdentityType.APPLICATION)
    public class MyClass
    {
     @PrimaryKey
     @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
     private Long id;
             ..........
             ..........
    }
    

    在我的servlet中,我需要在会话中存储这个类的对象

    ............
    MyClass u = new MyClass();
    ......
    ......
    HttpSession session = req.getSession(true);
    session.setAttribute("SV", u);
    ........
    

    我要走了 java.lang.RuntimeException: java.io.NotSerializableException:

    3 回复  |  直到 15 年前
        1
  •  5
  •   rsp    15 年前

    会话可以临时存储在磁盘上或迁移到另一个应用服务器。为了确保会话中的对象在这些情况下可以被处理,它们需要是可重用的。您可以通过实现 Serializable 接口:

    import java.io.Serializable;
    
    public class MyClass implements Serializable {
    }
    
        2
  •  1
  •   Community CDub    8 年前

    rsp is right :Serializable是正确答案,但实现Serializable只是第一步。例如,您还需要使所有字段都可以序列化或暂时化。

    many tutorials about Java Serialization Effective Java

        3
  •  0
  •   David Soroko    15 年前

    我猜在类中放置一堆注释并不能使它实现可序列化接口。为什么要这么做?做 public class MyClass implements Serializable { ...