2010-08-15 33 views
4

我處於這樣一種情況,我希望在基於Java的Web應用程序中實現Ajax Push,以更新諸如網頁上的庫存物品的計數,來自用戶的任何交互。我明白,所需的技術稱爲Ajax Push。我也有一些JSF 2.0的經驗,這是首選,但不是必需的。是否有更好的Ajax推送JSF 2.0比Icefaces

首先,我們需要一個演示程序在大約幾個星期的時間內顯示,但如果演示程序被接受,我們將有足夠的時間做正確的演示。

我環顧四周,發現顯然Icefaces做得非常好,我會研究它。我只想聽聽有沒有其他人可能會更適合我們使用?

請不要「這些是Google的前三名」回答。我想根據經驗聽取意見。

+0

我們最終決定不提供基於Ajax的功能,因此我們不需要推送。 – 2010-08-23 12:08:10

+0

到目前爲止,您是否使用過JSF 2的Ajax Push?如果是的話,你能提供一些你的經驗嗎? – Theo 2011-01-12 10:05:40

+0

@Theo,還沒有。你可能想打開一個新的問題,具體問你想知道什麼。 – 2011-01-12 10:52:57

回答

2

我們嘗試了Icefaces(在JSF 1.2模式下)和Atmosphere/Comet with Primefaces。

冰塊推出箱子出色地工作。

我們無法使用Atmosphere工作(在Primefaces中),但這可能是因爲我們使用最新的(0.6)版本進行了嘗試,並且Primefaces不支持它 - 所以現在我們正在等待更新版本(它承諾它將成爲p:dataTable重寫後的下一個重要特性)。在我們的例子中,推送不是演示中的關鍵元素,我們可以使用輪詢而不是真正的推送解決方案。

Icepush很容易起來和運行,而大氣沒有很好的記錄(恕我直言),並需要一堆瓶子和配置。這確實不適合初學者。

所以,如果ajax:push是你演示的關鍵部分,我建議你留在JSF 1.2和Icefaces中。至少在演示完成並且客戶很高興之後 - 在此之後,您仍然可以花時間使用Atmosphere配置;-)

+0

選擇說「這個作品」 – 2010-08-23 12:09:26

2

我不知道這是否更好,因爲我沒有做IceFaces,但PrimeFaces也有<p:push>組件。它利用引擎蓋下的Atmosphere儘可能多地與appserver無關,這反過來已經非常棒了。它將所有特定於應用程序服務器的細節抽象出來。另請參閱有關Servlet 3.0 vs. Atmosphere的文章:

當您部署應用程序時,Atmosphere總是自動檢測到最佳的異步API。它總是先嚐試查找3.0 Async API。如果失敗,它將嘗試查找Web服務器的本地API,如Grizzly Comet(GlassFish),CometProcessor(Tomcat),Continuation(Jetty),HttpEventServlet(JBossWeb),AsyncServlet(WebLogic),Google App Engine(Google)。最後,它會回退使用阻塞I/O線程來模擬對異步事件的支持。

如何所有這一切的工作進行了詳細的PrimeFaces User Guide (PDF) 6章在聊天應用程序的味道解釋,因爲它是在<p:push>展示頁面呈現。

+0

你會推薦它嗎? – 2010-08-16 08:02:14

+0

它在紙上看起來不錯,但正如其他答案中的@Gabor所說,讓它運作起來更加困難。其實,在回答這個問題之後,我決定和它一起玩。目前的Atmosphere 0.6.x版本確實不能很好地工作。你需要0.5.x,然後至少0.5.1。 PF們應該在下一個PF版本中追上它。一般來說,我可以推薦PF作爲組件庫。但是由於我沒有廣泛使用IceFaces,這會有點主觀。我唯一的經歷是糟糕的,因爲我無法讓它在GF v3上運行,並且修復需要EE版本(不是免費的)。 – BalusC 2010-08-16 11:22:19

3

您現在可以在ICEfaces之外使用Ajax Push。結帳http://www.icepush.org/。有JSP,Spring MVC,Wicket,GWT,jQuery,原型和Grails的客戶端適配器。

1

我認爲ICEfaces是AJAX PUSH的最佳解決方案,他們率先推出了它,並且在我看來他們擁有最好的實施。

-4

ICEfaces絕對是您短期演示要求的最佳選擇,也是您長期「做正確」目標的最佳選擇。

首先,ICEfaces爲開發推送應用程序提供了最自然的模型。您認爲服務器端觸發器會導致應用程序狀態發生變化。 ICEfaces和JSF完成剩下的工作,影響新狀態的無縫渲染。沒有雜亂的推標籤標記,你必須準確地聲明演示文稿隨每個推送事件的變化。如果您瞭解JSF,則使用ICEfaces將推送添加到應用程序非常簡單。首先讓您的基本JSF應用程序工作,然後將必要的推送邏輯添加到您的服務器端代碼中。無需其他更改。

長期來看,您應該知道ICEfaces提供了企業級部署所需的所有部署技術。企業推送服務器是其核心,因爲它在羣集環境中提供完整的推送連接管理(請參閱:EPS)。 ICEfaces在許多財富500強企業中,Ajax Push正在廣泛的生產環境中運行,因此您可以放心,它可以根據您的需求進行擴展。此外,還提供專業的客戶支持。這些都是關鍵特徵,可以幫助您銷售演示背後的物質。

市面上沒有其他產品可以比較,並且期待符合JSF 2.0標準的ICEfaces 2.0,並帶來下一代Ajax Push功能。它現在可用於測試版。

+3

這是基於個人經驗還是銷售點? – 2010-08-25 18:50:19

0

Primefaces看起來很有前途,但推送功能並不適用於他們的最新版本。隨着Icefaces 2測試版,推送作品OOTB。

+0

這是真的嗎? – durron597 2012-12-09 07:37:07

0

對於jsf 2.2,有一個名爲Ext JSF Push的基於獨立氛圍框架的推送實現。它完全集成到JSF,可以推到一個單一的客戶端,一鍵直接渲染到一組客戶端或推渲染事件以一組客戶端:

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

推標籤內部的渲染事件可以被觸發通過傳統的渲染屬性或通過代碼調用。渲染透明地廣播給所有連接的客戶端(http://www.intersult.com/wiki/page/JSF%20Ext%20Push)。