在会话中存储对象

时间:2010-07-30 10:39:43

标签: java session servlets

我有一个PersistenceCapable类

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

在我的servlet中,我需要在session

中存储这个类的对象
............
MyClass u = new MyClass();
......
......
HttpSession session = req.getSession(true);
session.setAttribute("SV", u);
........

我正在java.lang.RuntimeException: java.io.NotSerializableException:

这是什么?

3 个答案:

答案 0 :(得分:4)

会话可以临时存储在磁盘上或迁移到其他应用程序服务器。为了确保在这些情况下可以处理会话中的对象,它们需要是可以选择的。您可以通过实现Serializable接口来标记这一点:

import java.io.Serializable;

public class MyClass implements Serializable {
}

答案 1 :(得分:1)

rsp is right:Serializable是正确答案,但实施Serializable只是第一步。例如。您还需要将所有字段设置为Serializable或transient。

阅读其中一个many tutorials about Java Serialization,或者最重要的是:通过Joshua Bloch购买Effective Java并阅读所有内容其中包括序列化的4章。

答案 2 :(得分:0)

我想在你的类中添加一堆注释并不会使它实现Serializable接口。为什么要这样?做public class MyClass implements Serializable { ...