Сохранение состояния JSF первоначально на сервер и при передаче тайм-аута сеанса клиенту?

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

Или как-то это можно реализовать? Но я ожидаю, что это должно быть частью спецификации JSF!


Редактировать

После предложения BalusC я очень впечатлен Принципы JSF без сохранения состояния и текущая реализация. Если кто-то еще здесь также заинтересован в добавлении JSF без сохранения состояния в спецификацию JSF, рассмотрите возможность просмотра или голосования эта проблема.

JSF без сохранения состояния предлагает огромное повышение производительности для некоторых преимуществ, таких как невозможность динамического создания представлений (например, путем привязки, тегов JSTL и т. д.) или их изменения.


Режим работы JSF без сохранения состояния был бы невероятно полезен для высоконагруженных приложений и архитектур:

https://web.archive.org/web/20140626062226/http://industrieit.com/blog/2011/11/stateless-jsf-high-performance-zero-per-request-memory-overhead/#comment-4

Это ранее было предложено Джейкобом: http://weblogs.java.net/blog/jhook/archive/2006/01/experiment_goin.html

Это помогло бы JSF избавиться от клейма «медленный и пожирающий память» и помочь идти в ногу с современными техническими тенденциями (архитектуры без сохранения состояния).


person Rajat Gupta    schedule 30.04.2012    source источник
comment
Проголосовал за вопрос. JSF без сохранения состояния на самом деле слишком хорош, поскольку устраняет потери производительности JSF с отслеживанием состояния.   -  person Aklin    schedule 01.05.2012


Ответы (1)


Как это технически возможно? Сервер никогда не может надежно предсказать заранее, создаст ли следующий запрос новый сеанс, и поэтому ответ на текущий запрос должен использовать сохранение состояния на стороне клиента вместо сохранения состояния на стороне сервера. Если вам когда-нибудь удастся реализовать это с помощью простого JSP/Servlet, не стесняйтесь опубликовать запрос на улучшение спецификации JSF.

Просто используйте сохранение состояния на стороне клиента и убедитесь, что частичное сохранение состояния включено. Накладные расходы относительно невелики по сравнению с полным сохранением состояния.

Обратите внимание, что можно использовать JSF полностью без сохранения состояния. См. также этот блог. Единственным важным преимуществом является то, что вы не можете создавать представления динамически (например, с помощью binding, тегов JSTL и т. д.) и манипулировать ими после создания (например, добавляя/удаляя дочерние элементы компонента).

Смотрите также:

person BalusC    schedule 30.04.2012
comment
Спасибо, что познакомили меня с JSF без гражданства! Вероятно, это будет лучше для меня, поскольку я (возможно) не создаю/не изменяю динамически какие-либо представления, как вы описали. Но я предполагаю, что это работа на самых начальных стадиях разработки, верно? Так безопасно использовать прямо сейчас? Возможно, все же стоит попробовать.. - person Rajat Gupta; 30.04.2012
comment
Это все еще в бета-версии. Я, кстати, ни разу не пробовал. Теоретически это возможно, и выгода от невозможности динамического создания/манипулирования представлениями вполне понятна, это именно то, для чего JSF должен сохранять состояние. - person BalusC; 30.04.2012
comment
Да, стоит попробовать. Но я сомневаюсь, что какое-либо значительное количество людей использует это в производственной среде! Я постараюсь протестировать это раньше, если будет легче переключиться. - person Rajat Gupta; 30.04.2012
comment
@ user01 вам когда-нибудь удавалось это протестировать? - person Mike Braun; 29.12.2012
comment
@MikeBraun: да, я сделал, и он отлично работает (значительное улучшение производительности) с внедрением Mojarra. за исключением того, что были некоторые мелкие вещи, которые не работали. Кстати, прежде чем использовать в производстве, я жду, когда это будет официально включено в спецификацию JSF и предоставлено как часть Mojarra или Myfaces. - person Rajat Gupta; 30.12.2012
comment
Запись в блоге исчезла, см. -zero-per-request-memory-overhead/" rel="nofollow noreferrer">версия archive.org. - person Pixelstix; 15.06.2017
comment
@Pixelstix: с 2013 года вы можете включить JSF без сохранения состояния с помощью <f:view transient="true">. См. также stackoverflow.com/ вопросы/14890995/ - person BalusC; 15.06.2017