Сессионные бобы не получают значения по умолчанию после десериализации

StackOverflow https://stackoverflow.com/questions/6831751

  •  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 во время пассивации и активации».

EJB 3.1 Spec (зеркало/PDF)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top