Сессионные бобы не получают значения по умолчанию после десериализации
-
27-10-2019 - |
Вопрос
Я проходил книгу EJB 3.1 (О'Рейли, Эндрю Ли Рубингер и Билл Берк), там автор упоминает, что (это не точные слова в книге, это мое собственное понимание текста):
В SFSB, когда он становится активированным (после выхода из пассивированного пула), сериализованные объекты, в отличие от их первоначальной нормы, не возвращают значения по умолчанию, такие как int, не гарантированно вернет 0, а объект не гарантированно возвращает NULL
Мое понимание правильно? Если это правда, почему у EJB такое поведение?
Оригинальный пост http://www.coderanch.com/t/546765/java-ejb-cbcd/certification/why-serialization-unpredictable-sfsb#2481285
Решение
В соответствии с спецификацией, которая применима только к переходным полям.
Из спецификаций - О'Рейли не разработал EJBS (просто говоря ...):
"Пока контейнер не требуется для использования протокола сериализации Для языка программирования Java хранить состояние пассивированного экземпляра сеанса, он должен достичь эквивалентного результата. Единственное исключение что контейнеры не обязаны сбросить значение Переходные поля Во время активации [12]. Объявление полей сессии фасоли как переходные, как правило, обескуражено. [EJB 3.1 - 4.2.1 - акцент мой]
редактировать:
Кстати, ответ на ваш вопрос также в спецификации EJB:
«Ограничения на использование переходных полей гарантируют, что контейнеры могут использовать сериализацию Java во время пассивации и активации».