JSF — t: saveState x @ConversationScope

О временном сохранении состояния приложения JSF без использования сеанса:

Альтернативой является использование t:saveState библиотеки Apache Tomahawk; другой более поздней альтернативой является использование CDI @ConversationScope.

t:saveState x @ConversationScope
Каковы преимущества и недостатки каждого из них? Какой из них вы бы использовали и почему?
О потреблении памяти (место и время, затрачиваемое на сеанс). Чем лучше @ConversationScope?

JSF без сохранения состояния x t:saveState
В JSF 2.2 будет возможность запуска без сохранения состояния. Поскольку дерево компонентов больше не сохраняется, t:saveState не будет работать. Это правильно?!

У меня есть приложение, которое переходит с JSF 1.2 на JSF 2.x. У него много просмотров с использованием t:saveStave.
В настоящее время размер сеанса становится слишком большим. Это проблема в основном с репликацией сеанса.

Стоит ли заменить t:saveState на @ConversationScope?


Обновление: большинство вариантов использования являются потоковыми (например, мастер). Таким образом, @ViewScope не может быть применен.


person RicardoS    schedule 16.05.2014    source источник


Ответы (1)


О временном сохранении состояния приложения JSF без использования сеанса:

Альтернативой является использование t:saveState библиотеки Apache Tomahawk; другая более поздняя альтернатива — использование CDI @ConversationScope.

<t:saveState> относится к старым временам JSF 1.x, и его использование должно оставаться для этих приложений. @ConversationScope исходит из CDI 1.0, чтобы продлить срок службы компонентов и компонентов JSF по нескольким запросам, и использует идентификатор, который передается по запросам.

Наилучшей альтернативой при использовании JSF 2 является @javax.faces.bean.ViewScoped< /a>, а начиная с JSF 2.2 следует использовать @javax.faces.view.ViewScoped который совместим с CDI 1.1.

Если вы собираетесь использовать JSF 2.0.x или 2.1.x вместе с CDI 1.0, вы не сможете использовать @ViewScoped. Чтобы решить эту проблему, существуют сторонние библиотеки, которые позволяют просматривать область действия ваших JSF-бинов, управляемых CDI.

Стоит ли заменить t:saveState на @ConversationScope?

Поскольку вы переходите на JSF 2.x, вы должны отказаться от использования <t:saveState> вообще. В зависимости от версии JSF 2.x вы должны использовать @ViewScope или его альтернативу. Я бы не рекомендовал использовать @ConversationScope, если только вы не хотите/необходимо поддерживать работу bean-компонентов через несколько представлений, например, при реализации потока, но JSF 2.2 также решает эту проблему с помощью @FlowScoped.

Больше информации:

person Luiggi Mendoza    schedule 16.05.2014
comment
Привет. Еще можно использовать t:saveState в JSF 2, но все же лучше от него отказаться, верно?! Извините, я не говорил об этом раньше, но наш вариант использования действительно является мастером (или потоком). В этом случае можно использовать ConversationScope?! - person RicardoS; 19.05.2014
comment
И знаете ли вы что-нибудь о его потреблении памяти? Заранее спасибо. - person RicardoS; 19.05.2014
comment
@RicardoSilva, если вы используете JSF 2.2, используйте @FlowScoped, он подходит для мастеров. Если вы придерживаетесь JSF 2.0 или 2.1, используйте @ConversationScoped. - person Luiggi Mendoza; 27.05.2014