Сессионные компоненты с сохранением состояния не получают значения по умолчанию после десериализации - PullRequest
2 голосов
/ 26 июля 2011

Я просматривал книгу EJB 3.1 (О'Рейли, Эндрю Ли Рубингер и Билл Берк), там автор упоминает, что (это не точные слова в книге, это мое собственное понимание текста) :

в SFSB, когда он становится активным (после выхода из пассивированного pool), сериализованные объекты, в отличие от их исходной нормы, не будут возвращаться значения по умолчанию, такие как int, не гарантированно возвращают 0 и объект не гарантируется возвращать ноль

Правильно ли мое понимание? Если это правда, почему у EJB такое поведение?

Оригинальный пост на http://www.coderanch.com/t/546765/java-EJB-SCBCD/certification/why-serialization-unpredictable-SFSB#2481285

1 Ответ

2 голосов
/ 26 июля 2011

По спецификации, которая применима только к переходным полям.

Из спецификаций - О'Рейли не проектировал EJB (просто говоря ...):

"Пока контейнер не требуется использовать протокол сериализации для языка программирования Java для хранения состояния экземпляра пассивированного сеанса, он должен получить эквивалентный результат . Единственное исключение - что контейнеры не обязаны сбрасывать значение переходных полей во время активации [12]. Объявление полей сессионного компонента в качестве переходного процесса, как правило, не рекомендуется. "[EJB 3.1 - 4.2.1 - мойка ]

edit:

Кстати, ответ на ваш вопрос также содержится в спецификации EJB:

«Ограничения на использование переходных полей гарантируют, что контейнеры могут использовать сериализацию Java во время пассивации и активации.»

EJB 3.1 spec (mirror / pdf)

...