Есть ли лучший Ajax Push для JSF 2.0, чем Icefaces

Я нахожусь в ситуации, когда я хотел бы реализовать Ajax Push в веб-приложении на основе Java, чтобы обновлять такие вещи, как количество товаров на складе на веб-странице по мере их изменения без какого-либо взаимодействия с пользователем. Насколько я понимаю, технология, необходимая для этого, называется Ajax Push. У меня также есть некоторый опыт работы с JSF 2.0, и это желательно, но не обязательно.

Сначала нам нужна демонстрация, показывающая это примерно через пару недель, но если демо будет принято, у нас будет достаточно времени, чтобы сделать это правильно.

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

Пожалуйста, никаких ответов типа «это три лучших результата от Google». Хотелось бы услышать мнения, основанные на опыте.


person Thorbjørn Ravn Andersen    schedule 15.08.2010    source источник
comment
В итоге мы решили не представлять функциональность, основанную на Ajax, поэтому нам не нужен push.   -  person Thorbjørn Ravn Andersen    schedule 23.08.2010
comment
Вы уже использовали Ajax Push для JSf 2? Если да, можете ли вы поделиться своим опытом?   -  person Theo    schedule 12.01.2011
comment
@ Тео, нет еще. Возможно, вы захотите открыть новый вопрос, конкретно спрашивая, что вы хотите знать.   -  person Thorbjørn Ravn Andersen    schedule 12.01.2011


Ответы (7)


Мы пробовали как Icefaces (в режиме JSF 1.2), так и Atmosphere/Comet с Primefaces.

Icefaces push сработал блестяще из коробки.

Нам не удалось заставить работать Атмосферу (в Primefaces), но это может быть потому, что мы пробовали ее с последней (0.6) версией, а Primefaces еще не поддерживает ее, так что теперь мы ждем обновленную версию (она пообещал, что это будет следующая большая функция после того, как p:dataTable будет переписан). В нашем случае push не был критическим элементом в демонстрации, и мы могли легко использовать опрос вместо реального решения push.

Icepush было очень легко настроить и запустить, в то время как Atmosphere не очень хорошо документирован (ИМХО) и требует кучу jar-файлов и конфигураций. Это точно не для новичков.

Итак, если ключевой частью вашей демонстрации является ajax:push, я бы посоветовал вам остаться с JSF 1.2 и Icefaces. По крайней мере, пока демонстрация не будет завершена и клиент не будет доволен - после этого вы все еще можете потратить время на настройку атмосферы ;-)

person egbokul    schedule 16.08.2010

Теперь вы можете использовать Ajax Push за пределами ICEfaces. Оформить заказ на http://www.icepush.org/. Существуют клиентские адаптеры для JSP, Spring MVC, Wicket, GWT, jQuery, прототипа и Grails.

person Philip Breau    schedule 17.08.2010

Я не знаю, лучше ли это, так как я не использую IceFaces, но PrimeFaces имеет <p:push>. Он использует Atmosphere под капотом, чтобы быть максимально независимым от сервера приложений, что в очередь уже довольно удивительным. Он абстрагирует все детали, специфичные для сервера приложений. Также см. эту статью о Servlet 3.0 и Atmosphere:

Atmosphere всегда автоматически определяла лучший асинхронный API при развертывании приложения. Он всегда сначала пытается найти 3.0 Async API. В случае сбоя он попытается найти собственный API WebServer, такой как Grizzly Comet (GlassFish), CometProcessor (Tomcat), Continuation (Jetty), HttpEventServlet (JBossWeb), AsyncServlet (WebLogic), Google App Engine (Google). Наконец, он откажется от использования блокирующего потока ввода-вывода для эмуляции поддержки асинхронных событий.

Как заставить все это работать, подробно описано в главе 6 Руководства пользователя PrimeFaces (PDF) в виде чат-приложения, представленного на странице <p:push> витрины.

person BalusC    schedule 15.08.2010
comment
На бумаге это выглядит хорошо, но, как сказал @Gabor в другом ответе, заставить его работать сложнее. На самом деле, после этого ответа я решил немного поиграть с ним. Это действительно не очень хорошо работает с текущими версиями Atmosphere 0.6.x. Вам понадобится 0.5.x, а затем как минимум 0.5.1. Ребята из PF должны наверстать упущенное в следующих релизах PF. В целом могу рекомендовать PF как библиотеку компонентов. Но это было бы немного субъективно, так как я мало играл с IceFaces. Единственный опыт, который у меня был, был плохим, потому что я не мог заставить его работать на GF v3, а для исправления требуется версия EE (не бесплатная). - person BalusC; 16.08.2010

Я думаю, что ICEfaces — лучшее решение для AJAX PUSH, они были пионерами, и, на мой взгляд, у них лучшая реализация.

person Calin Martinconi    schedule 24.08.2010

Primefaces выглядит многообещающе, но функция push не работает в их последней версии. В бета-версии Icefaces 2 push работает OOTB.

person Luke    schedule 22.10.2010

Существует независимая реализация push для jsf 2.2, основанная на инфраструктуре атмосферы, которая называется Ext JSF Push. Он полностью интегрирован в JSF и может передавать данные одному клиенту, отправлять рендеринг непосредственно группе клиентов или отправлять события рендеринга группе клиентов:

<e:push id="some-channel" direct="true">
    <h:outputText id="text" value="#{pushTest.value}"/>
</e:push>

Событие рендеринга внутри push-тега может быть вызвано либо традиционным атрибутом рендеринга, либо вызовом кода. Рендеринг прозрачно передается всем подключенным клиентам (http://www.intersult.com/wiki/page/JSF%20Ext%20Push).

person Tires    schedule 22.11.2013

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

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

В долгосрочной перспективе вы должны знать, что ICEfaces предоставляет все технологии развертывания, которые вам понадобятся для корпоративных развертываний. Enterprise Push Server занимает центральное место в этом, поскольку он обеспечивает полное управление push-подключениями в кластерных средах (см.: EPS). ICEfaces Ajax Push работает в широком спектре производственных сред на многих предприятиях из списка Fortune 500, поэтому вы можете быть уверены, что он масштабируется в соответствии с вашими требованиями. Кроме того, доступна профессиональная поддержка клиентов. Все это ключевые характеристики, которые помогут вам продать содержание вашей демонстрации.

Ничто другое на рынке не сравнится, и с нетерпением ждем ICEfaces 2.0, который совместим с JSF 2.0 и предоставляет возможности Ajax Push следующего поколения. Он доступен в бета-версии сейчас.

person Steve Maryka    schedule 25.08.2010
comment
Это основано на личном опыте или рекламном предложении? - person Thorbjørn Ravn Andersen; 25.08.2010