Thursday, 3 December 2009

High-Availability Ajax Push Deployments - An Industry First For ICEfaces EE

« What's new in JSF 2.0 webinar online | Main | GlassFish v3 and ICEfaces 2.0 »
Anyone that has witnessed the Google Wave demo knows that real-time, collaborative web applications are upon us. Web-based Ajax Push is fundamental to these types of applications, and has also been fundamental to ICEfaces since the very first release of the framework. Google's excellent adventure aside, we see Ajax Push moving out of the early adopter stage and into serious enterprise deployments with stringent scalability and availability requirements.

ICEfaces is keeping pace with these revolutionary deployment requirements by introducing industry-first capabilities in the Enterprise Push Server (EPS), which is now available in the newly-released ICEfaces Enterprise Edition 1.8.2. You can read more about EPS here, or if you are a supported customer a more detailed description is available in the ICEpack wiki here.

There are a few solutions in industry today that deliver Ajax Push capabilities, and most of them, including ICEfaces, relying on the long-polling technique to deliver asynchronous push updates to the browser. This technique requires an open connection to be held in anticipation of push events, which works fine if you only have a single view onto a single web application, as only one push connection is required. A major problem manifests itself though when you open multiple browser views onto the same web application, have multiple push-enabled applications deployed within the same domain, or have multiple push-enabled portlets in the same page. It is not feasible for each view to maintain its own push connection, as this will exceed the browsers connection limit, so it is necessary to share the push connection among the views. ICEfaces solves this problem with the client-side Ajax Bridge performing connection sharing between the browser views, and the Push Server managing a single blocking connection at the server for each browser client. No other Ajax Push technology offering provides a comprehensive and transparent mechanism for connection sharing.

Returning our attention now to enterprise-grade, clustered, high-availability deployments, we see the push connection management problem compound itself, as now we need to support load sharing and fail over of push connections. This is the domain of the Enterprise Push Server, which delivers those precise capabilities, as illustrated in the deployment architecture diagram below.

EPS Deployment Architecture

The architecture leverages standard Java Enterprise clustered deployment capabilities using front-end load sharing with session affinity, and session replication for application fail over support. Standard load sharing techniques are also used to distribute push connections among multiple EPS instances in the cluster, using affinity based on an EPSID instead of a SESSIONID. Enterprise Push Servers track and ensure the delivery of updates to clients and communicate that information amongst themselves, via JMS, so that any EPS node is capable of responding to any client. When a node in the cluster goes down, push connections migrate to other viable nodes, and the EPS instances there take over connection management responsibilities. The failure condition is communicated to the client's Ajax Bridge, which reloads the page to synchronize state between the client and server. Beyond the page reload, the user experience is uninterrupted.

These capabilities are yet another industry first for ICEfaces, and are available exclusively in the ICEfaces Enterprise Edition, including support for the following application servers.


Vendor
Product
Version
Apache
Tomcat (w/ Apache ActiveMQ 5.1)
6.0
JBoss Inc.
JBoss Application Server
4.2.x
IBM
Websphere Application Server
6.1
Oracle WebLogic Server 10.3.1

So as collaborative applications become the mainstay of your Enterprise, you can rely on ICEfaces and the Enterprise Push Server to deliver highly-scalable and highly-available deployments of mission-critical applications.

Technorati Tags:

Posted by steve.maryka at 10:50 AM in Entries by Steve Maryka

 

[Trackback URL for this entry]

« December »
SMTWTFS
  12345
6789101112
13141516171819
20212223242526
2728293031