2014-09-12 6 views

ответ

2

Раздел 6.6.3. (Зависимые от пассивации) спецификации CDI заявляют, что контейнер гарантирует, что Faceless beans - это пассивация, способная ли вы объявлять свой факсимильный компонент без сепарирования или нет.

В разделе 6.6.5 спецификаций указано, что при развертывании возникает ошибка, если пассивирующая область (например, «@SessionScoped») объявляет зависимость от зависимостей, не связанных с пассивацией.

Как контейнер обрабатывает реактивацию, зависит от реализации. Он может сделать сериализуемым bean-файл без имени, или сериализуемый прокси-сервер, и ссылку на bean-компонент, когда прокси-сервер десериализуется.

+0

> Ссылка на bean-компонент, когда прокси-сервер десериализуется, обновляется' - я не исследовал каждый другой прокси-сервер для реализации EJB, но концептуально я не думаю, что прокси-сервер содержит ссылку на фактический bean-компонент без состояния, но просто код для извлечения из пула. А именно, каждый другой вызов одного и того же прокси-сервера может перейти к другому экземпляру компонента, поэтому для прокси-сервера не будет смысла сохранять ссылку на конкретный экземпляр. –

2

Добавление к ответу maress; поскольку компонент Faceless для клиента на самом деле является без гражданства, контейнер необязательно должен сериализовать что-либо для него.

Каждый другой вызов фаната без состояния может в любом случае перейти в другой экземпляр компонента или любой другой вызов может вызвать создание нового экземпляра bean-объекта (что является поведением по умолчанию в WildFly 8, если я не ошибаюсь).

Как упоминалось выше, технически прокси-сервер может быть сериализуемым, но прокси-сервер обычно делает немного больше, чем выборка фактического компонента * из системного пула (который может быть нулевого размера) и делегировать все вызовы методов на это.

*) В качестве технической детали; прокси-сервер не может напрямую ссылаться на фактический компонент, но вызывать цепочку перехватчиков до фактического фактического компонента, называемого

Смежные вопросы