Хранение объектов в сессии - PullRequest
1 голос
/ 30 июля 2010

У меня есть класс PersistenceCapable

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

В моем сервлете мне нужно хранить объект этого класса в сеансе

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

Я получаю java.lang.RuntimeException: java.io.NotSerializableException:

Что это?

Ответы [ 3 ]

4 голосов
/ 30 июля 2010

Сессии могут быть временно сохранены на диске или перенесены на другой сервер приложений. Чтобы быть уверенным, что объекты в сеансе могут обрабатываться в таких ситуациях, они должны быть пригодны для разделения. Вы можете пометить это путем реализации интерфейса Serializable:

import java.io.Serializable;

public class MyClass implements Serializable {
}
1 голос
/ 30 июля 2010

Правильно rsp : Serializable - правильный ответ, но реализация Serializable - это только первый шаг.Например, вам нужно также сделать все поля либо Сериализуемыми, либо временными.

Прочитайте один из много учебников о Java Сериализация , или лучше всего: купите Джошуа Блоха Effective Java и прочитайте все, включая 4 главы о Сериализации.

0 голосов
/ 30 июля 2010

Я полагаю, что размещение в вашем классе нескольких аннотаций не позволит реализовать интерфейс Serializable. Зачем это? Do public class MyClass implements Serializable { ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...