Как сделать неизменяемый класс Java сериализуемым? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть класс User, который генерируется wsdl.Я не могу изменить этот класс.У меня есть задача, в которой я должен сохранять сессии в Redis вместо Tomcat.Но после аутентификации я получил ошибку, в которой говорилось, что класс User должен быть Serializable.Как я могу сделать этот класс сериализуемым?

1 Ответ

0 голосов
/ 04 октября 2018

Вы должны написать свой собственный сериализатор для пользователя.Предполагается, что ваш пользователь каким-то образом хранится в классе сеанса, и этот сеанс должен быть сериализован:

public class TheSession implements Serializable
{
    ...
    private transient User user;
    ...
    private void writeObject(ObjectOutputStream oos) throws IOException {
        oos.defaultWriteObject(); // serializes all properties except the transients
        // serialize single fields of the User class
        oos.writeObject(user.getName());
        oos.writeInt(user.getId());
        ...
    }
    private void readObject(ObjectInputStream ois) throws  IOException, ClassNotFoundException {
        ois.defaultReadObject();
        String userName = (String)ois.readObject;
        int userId = ois.readId();
        this.user = new User(userName, userId); // assume that we have such a constructor
        ... // fill the other fields of user.
    }
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...