Заставить классы реализовать Serializable для репликации сеансов Tomcat - PullRequest
2 голосов
/ 24 февраля 2020

Я реализую репликацию сеанса tomcat для достижения балансировки нагрузки между кластерами, однако для репликации необходимо, чтобы все объекты в сеансе были сериализуемыми.

Существует множество классов, которые не были Serilazable и сохранялись в сеансе до кластера, и мы изменили для реализации Serilazable, однако это может произойти при добавлении будущих классов, кто-то может пропустить Serializable, и это приведет к ошибке при репликации сеанса.

Я думал расширить реализацию HttpSession, предоставляемую tomcat, и переопределить setAttribute для приема Serializable. объект как параметр, однако интерфейсный метод принимает объект как параметр, поэтому это невозможно.

есть ли способ заставить все классы, которые будут помещены в сессию, быть Serilazable во время компиляции?

Мы используем весну 4. Интересно, думаю, аспект поможет?

1 Ответ

0 голосов
/ 24 февраля 2020

Я бы не рекомендовал Java Сериализация или репликация сеанса . Несмотря на это:

Если класс расширяемый, вы можете создать его подкласс с классом, который также реализует Serializable. Конечно, ни одно из полей базовых классов не будет сериализовано. Вам понадобятся пользовательские readObject и writeObject для выполнения этих действий.

Чтобы сделать это динамически, тогда, вероятно, вам понадобится какой-то механизм фильтрации для замены объектов, когда они go входят и выходят из сеанса .

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