Пассивация и сериализация сеансовых компонентов с отслеживанием состояния — EJB

Следующие вопросы приходят мне в голову

1) Где-то читал:

Пассивация: шанс bean-компонента с состоянием на масштабируемость

Что здесь означает масштабируемость?

2) Насколько сеансовый компонент без сохранения состояния более масштабируем, чем сеансовый компонент с сохранением состояния?

3) As

Для пассивации сеансовый компонент с состоянием сериализуется, а для активации он будет десериализован контейнером...

Зачем нам нужна сериализация и десериализация, разве это (пассивация и активация) не может быть сделано без сериализации и десериализации? И как сериализация помогает контейнеру пассивировать бин??


person Junaid    schedule 13.03.2015    source источник


Ответы (1)


1) сеансовые компоненты с отслеживанием состояния должны сохранять свою идентичность и состояние между вызовами методов. Если к такому bean-компоненту не обращались в течение некоторого времени, контейнер может выбрать его пассивацию. Это означает, что его состояние каким-то образом сохраняется за пределами JVM (обычно записывается в файл на диске с использованием сериализации Java), а использование ресурсов (памяти) восстанавливается. Контейнер снова активирует его (десериализует) при повторном доступе к SFSB. Поэтому SFSB лучше масштабируется (больше его экземпляров может поместиться в одну JVM, но есть связанные с этим потери времени и ввода-вывода).

2) bean-компоненты без сохранения состояния должны существовать только на время вызова одного метода, после чего любые ресурсы, которые они используют, могут быть восстановлены. Чаще всего некоторые из них сохраняются в пуле и временно становятся доступными для работы с конкретным вызовом метода. Таким образом, сеансовые компоненты без сохранения состояния практически не влияют на масштабируемость.

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

3) Сериализация — это механизм, который Java использует для чтения и записи произвольного состояния объекта. Переменные экземпляра, связанные с SFSB, должны быть сериализуемыми (кроме некоторых задокументированных исключений). Это не только позволяет пассивировать/активировать SFSB, но также позволяет переносить его на другие экземпляры JVM для поддержки аварийного переключения и/или балансировки нагрузки.

Что касается SFSB, пассивация и активация могут выполняться другими способами, но сериализация предписывается спецификацией EJB.

person Steve C    schedule 13.03.2015
comment
Что ж, спасибо за ответ ... но он не отвечает на мои первые 2 вопроса. Не могли бы вы подробнее рассказать о последнем абзаце (например, как сериализация помогает в пассивации и активации) ?? Спасибо - person Junaid; 13.03.2015
comment
В первом пункте вы написали, что обычно записывается в файл на диске с использованием сериализации Java... не могли бы вы дать мне какую-либо ссылку/ссылку на него?? Спасибо - person Junaid; 16.03.2015
comment
Ссылки нет. Это представляет мои наблюдения. Я широко использовал JBoss/WildFly, WebSphere и WebLogic. - person Steve C; 16.03.2015