Is there a better Ajax Push for JSF 2.0 than Icefaces

I am in a situation where I would like to implement Ajax Push in a Java-based web application to update things like the number of items in stock on a web page, as they change without any user interaction. I understand that the technology necessary for this is called Ajax Push. I also have experience with JSF 2.0, and this is preferable, but not necessary.

First we need a demo showing this in about a couple of weeks, but if the demo is accepted, we will have enough time to do it right.

I looked around and found that Icefaces seems to be doing this very well, and I will study it. I just wanted to hear if there are others that might be better for us?

Please, no "these are the three best hits from Google." I would like to hear opinions based on experience.

+4
source share
7 answers

We tried both Icefaces (in JSF 1.2 mode) and Atmosphere / Comet with Primefaces.

Icefaces jerked brilliantly out of the box.

We couldnโ€™t get Atmosphere to work (in Primefaces), but it could be because we tried it with the latest version (0.6), and Primefaces does not support it yet - so now we are waiting for the updated version (it is promised that this will be the next big function after p: dataTable has been rewritten). In our case, push was not a critical element in the demonstration, and we could easily use polling instead of a real push solution.

Icepush was very easy to get up and work, while Atmosphere was not very well documented (IMHO), and required a bunch of cans and configurations. This is not for beginners.

So, if ajax: push is a key part of your demo, I suggest you stay with JSF 1.2 and Icefaces. At least until the demonstration is completed and the client is happy - you can still spend time with the Atmosphere configuration after that; -)

+2
source

Now you can use Ajax Push outside ICEfaces. Checkout http://www.icepush.org/ . There are client adapters for JSP, Spring MVC, Wicket, GWT, jQuery, prototype and Grails.

+3
source

I do not know if this is better, since I do not do IceFaces, but PrimeFaces has <p:push> . It uses Atmosphere under the hoods to be as independent as possible from the application server, which in turn is already quite surprising. It abstracts out all the details that depend on the application server. Also see this article on Servlet 3.0 vs. Atmosphere :

The atmosphere always automatically detects the best asynchronous API when deploying the application. He always tries to find the 3.0 Async API first. If it fails, it will try to find its own WebServer API, such as Grizzly Comet (GlassFish), CometProcessor (Tomcat), Continuation (Jetty), HttpEventServlet (JBossWeb), AsyncServlet (WebLogic), Google App Engine (Google). Finally, he refuses to use a blocking I / O stream to emulate support for asynchronous events.

How to get all this to work is described in detail in Chapter 6 of the PrimeFaces User Guide (PDF) as an example of a chat application as shown on the <p:push> page.

+2
source

I think ICEfaces is the best solution for AJAX PUSH, they did it for the first time, and, in my opinion, they have the best implementation.

+1
source

Surfaces look promising, but push functionality does not work with its latest version. Using Icefaces 2 beta, push works OOTB.

0
source

There is an independent push-based framework for jsf 2.2 called Ext JSF Push. It is fully integrated in JSF and can click on a single client, click on a visualization directly on a group of clients, or send rendering events to a group of clients:

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

A rendering event inside a push tag can be triggered either by a traditional rendering attribute or by calling a code. Rendering is transparently transmitted to all connected clients ( http://www.intersult.com/wiki/page/JSF%20Ext%20Push ).

0
source

ICEfaces is definitely best suited for short-term demo requirements, as well as your long-term "do it right" goals.

First, ICEfaces provides the most natural model for push application development. You think simple server triggers cause state changes in your application. ICEfaces and JSF do the rest, which affects the smooth rendering of the new state. There is no messy tagging where you need to clearly indicate how the view changes with each push event. If you know JSF, adding push to your application using ICEfaces is easy. First load the main JSF application, and then add the necessary push logic to the server code. No other changes are required.

In the long run, you should know that ICEfaces provides all the deployment technology needed to deploy corporate strength. Enterprise Push Server is central to this issue as it provides complete control over streaming connections in clustered environments (see EPS ). ICEfaces Ajax Push works in a wide range of production environments across many Fortune 500 enterprises, so you can be sure that it will scale to your requirements. In addition, professional customer support is available. All of them are key characteristics that will help you sell the substance for your demonstration.

Nothing else on the market compares and does not expect ICEfaces 2.0 compatible with JSF 2.0, and provides next-generation Ajax Push capabilities. Now it is available at Beta.

-4
source

All Articles