ICEpdf

ICEpush Overview

ICEpush unleashes the power of Ajax Push in a wide range of Java and JavaScript technologies, enabling the development of revolutionary, collaborative web applications.  Building on years of expertise with Ajax Push in ICEfaces and JSF, ICEpush provides a lightweight Notification Core that enables asynchronous communication over standard HTTP connections using only standard client browser capabilities.  An integration layer adapts the Core to a variety of Java and JavaScript web development technologies.  ICEpush Integration Bundles provide everything you needs to get started using ICEpush with your technology of choice, including:

Java Technologies
JavaScript Technologies

Architecture

The diagram below illustrates the basic architecture of ICEpush.  Central to it is the ICEpush Core which implements an asynchronous notification mechanism capable of triggering client-side JavaScript logic from server-based triggers.  As a pure notification mechanism, the Core delivers no application-specific payload, leaving this to either an integration layer or application-specific business logic.  This payload-free approach has key advantages related to scalability and security.

icepush

Notification Core

The ICEpush Core implements the asynchronous notification mechanism using long polling over HTTP.  Key characteristics of the mechanism are:
  • Lightweight: The mechanism is purely for notification and carries no application-specific payload, making it extremely lightweight, and massively scalable.
  • Reliable: The mechanism guarantees delivery of notifications, and supports fault-tolerant/high-availability deployments.
  • Secure: Because the mechanism carries no application data, it is not readily exploitable.

Long polling introduces a number of idiosyncrasies related to inversion of the HTTP protocol, and the need to maintain blocking connections capable of returning asynchronous notifications.   The Core handles all the intricacies related to management of the required blocking connections, including:

  • Connection Sharing:  ICEpush ensures that the browser only uses a single blocking connection for notifications.  When multiple browser windows are connected to push-enabled web applications in the same domain, the blocking connection is shared between all windows.
  • Connection Refresh:  The reliability of a blocked connection can deteriorate over time, so it is necessary to continuously refresh that connection when idle.  The ICEpush mechanism periodically forces a reconnect on the blocking connection to ensure it remains healthy.
  • ARP: Servlet 3.0 includes optional Asynchronous Request Processing that is fully integrated with the ICEpush mechanism, and can improve the scalability of blocking connections under certain deployment scenarios.

Integration Layer

The low-level Notification Core provides basic push capability to an application, but must be integrated with the application business logic differently, depending on what technology that business logic is implemented with.  An integration layer provides the glue between the core mechanism and the particular web development technology used to implement the application.  The features of any particular integration layer are tailored to the programming model for the associated development technology.  An integration layer may provide some general-purpose payload retrieval and processing capabilities, or may defer payload processing entirely to application-specific business logic.

Integration Bundles

An integration bundle has everything you need to get started with ICEpush using your web development technology of choice. Each technology-specific bundle includes a complete integration, and  sample applications that illustrate the various features available in the bundle.  Complete documentation is also included, so you will be productively developing Ajax Push features into your applications in no time.  Integration bundles currently available include:

Java Technologies
JavaScript Technologies

Enterprise Deployments

Open Soure ICEpush provides everything you need for single node deployments of push-enabled web applications, but if you need support for clustered, high-availability deployments you will need to upgrade to ICEpush EE (coming soon).  Its a completely seamless and transparent migration when you are ready for that enterprise-wide deployment.

Find out more about ICEpush:

Download this Open Source Java PDF Software Development Kit and start adding PDF capabilities to your Java Application today!

ICEpdf