SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
Ajax Push
For Revolutionary Enterprise Applications




Micha Kiener
mimacom ag

Ted Goddard, Ph.D.
ICEsoft Technologies

5420
2

Agenda

>   Web2.0 ™
>   Multi- user Ajax Demo
>   Push for enterprise collaboration
>   Asynchronous HTTP on the Wire
>   Asynchronous HTTP and the Server
>   Developing Asynchronous Applications
>   Conclusion
3

What sort of revolution?
“And yet it moves.”




  American Revolution             French Revolution
Dump everything in the bay        Storm the Bastille


                    Scientific Revolution
                Ex perimentation and Reason
4

Web 2 .0
A Web by the people, for the people.


 >   Documents on the web increasingly generated by users




 >   Out of the Information Age, into the Participation Age
 >   As a whole, the World Wide Web is a collaborative environment, but
     individual pages are only weakly so
 >   Are web user interfaces becoming more powerful?
 >   Is the user an HTTP client?
5

Ajax
Ajax is a state of mind.

  >   It was AJAX (Asynchronous JavaScript™ Technology with XML)
       > or Asynchronous JavaScript technology with XMLHttpRequest
      > now it’s Ajax (not an acronym) because many different techniques
        satisfied the same goals
      > coined by Jesse James Garrett in 2005 to sell an insurance company
        on re- writing all their software
  >   Is the web defined by the W3C or by browser implementers? (Ajax does
      not ex ist in W3C universe yet.)
  >   Ajax decouples user interface from network protocol
  >   Ajax is the leading edge of the user interface possible with current
      popular browsers
  >   The user ex perience is important
6

The Asynchronous Web Revolution
The Web enters the Participation Age.

 >   Ajax is still typically synchronous with user events
 >   Full asynchrony has updates pushed from server any time

 >   Update pages after they load
 >   Send users notifications
 >   Allow users to communicate and collaborate within the web application

 >   Called “Ajax Push”, “Comet”, or “Reverse Ajax ”
     - This is the full realization of Ajax , now fully asynchronous
7

Server- mediated Collaboration




                                         Ex ternal Application


                        Server


               • User Initiat ed
      User
     Push
     Action                                Push
                                           Push
              • Application Init iated


     Micha                                 Ted
8

Applications in the Participation Age
Application- mediated communication.

 >   Distance learning
 >   Collaborative authoring
 >   Auctions
 >   Shared WebDAV filesystem
 >   Blogging and reader comments
 >   SIP- coordinated mobile applications
 >   Hybrid chat/ email/ discussion forums
 >   Customer assistance on sales/ support pages
 >   Multi- step business process made collaborative
 >   Shared trip planner or restaurant selector with maps
 >   Shared calendar, “to do” list, project plan
 >   Games
 >   Enterprise shared record locking and negotiation
9

Agenda

>   Web 2.0
>   Multi- user Ajax Demo
>   Push for enterprise collaboration
>   Asynchronous HTTP on the Wire
>   Asynchronous HTTP and the Server
>   Developing Asynchronous Applications
>   Conclusion
10

Asynchronous Ajax Demo
GlassFish/ Grizzly with ICEfaces WebMC




          http:/ / webm c.icefaces.org/
11

Agenda

>   Web 2.0
>   Multi- user Ajax Demo
>   Push for enterprise collaboration
>   Asynchronous HTTP on the Wire
>   Asynchronous HTTP and the Server
>   Developing Asynchronous Applications
>   Conclusion
12

Didn’t we have that already?
Push- mechanisms in Rich- Clients

 >   Rich- Clients connect ed t o the server in a keep- alive manner
 >   Full Java- API is available wit hin t he client for networking
     and event- handling
 > Server can push an event to t he client any time
    > Eit her by having t he client polling for event s (opt ionally
      combined with a heart- beat, ping- like request)
    > Or by callback from t he server
 > Since the t echnology behind is well- known and t ransparent,
   its easy to use push for collaborative features and updat ing
   mechanisms
 > Rich- Clients were always claimed t o support push- features
13

Showcase for Push
Rich- Client based demo

 >   Collaboration t hrough edit ing and pessimist ic locking

 >   A list of Person object s which may be edited and creat ed

 >   Wit h pessimist ic locking, a lock- object must be obtained
     before t he object is editable

 >   If the lock is held by another user, it should be possible t o
     not ify him so he can release t he lock

 >   When dat a is changed, all views should be automat ically
     updat ed
14

Showcase for Push
Features using Rich- Client Push or Ajax Push

 >   Push in a Rich- Client (Demo)
     > Automatically updating changed / added / removed data sets
     > Collaborative notifications in the contex t of pessimistic locking
15

Showcase for Push
Features using Rich- Client Push or Ajax Push

 >   Wit h Ajax , people st ay longer on t he same page, hence
     aut omatic page update is needed

 >   As the Web get s more and more social, collaborat ive t asks
     come in place

 >   Updating and collaborat ion are inherently asynchronous and
     need some push- mechanism t o be fulfilled

 >   The nex t demo shows the collaborative features of t he rich-
     client in an Ajax Push web- environment
16

Showcase for Push
Features using Rich- Client Push or Ajax Push

 >   Push in a Web- Client (Demo)
     > Automatically updating changed / added / removed data sets
     > Collaborative notifications in the contex t of pessimistic locking
17

Agenda

>   Web 2.0
>   Multi- user Ajax Demo
>   Push for enterprise collaboration
>   Asynchronous HTTP on the Wire
>   Asynchronous HTTP and the Server
>   Developing Asynchronous Applications
>   Conclusion
18

Ajax Poll vs Ajax Push
Bending the rules of HTTP.
19

Bayeux/ Cometd
JSON Pub/ Sub.

   [
       {
           "channel": "/some/name",
           "clientId": "83js73jsh29sjd92",
           "data": { "myapp" : "specific data", value: 100 }
       }
   ]

  >    JSON Messages are published on specified channels
  >    Channel operations: connect, subscribe, unsubscribe, etc.
  >    Multiple transports: polling, long- polling, iframe, flash
  >    Server implementations: Perl, Python, Java™ programming language
  >    Server- side reflector with no server- side application possible
20

Ajax Push
HTTP message flow inversion.

   GET / auctionMonitor/ block/ receive- updates?icefacesID= 1209765435
   HTTP/ 1.1
   Accept: */ *
   Cookie: JSESSIONID= 75CF2BF3E03F0F9C6D2E8EFE1A6884F4
   Connection: keep- alive
   Host: vorlon.ice:18080
                                               Chat m essage “Howdy”
   HTTP/ 1.1 200 OK
   Content- Type: text/ xml;charset= UTF- 8
   Content- Length: 180
   Date: Thu, 27 Apr 2006 16:45:25 GMT
   Server: Apache- Coyote/ 1.1

   < updates>
    < update address= "_id0:_id5:0:chatTex t">
       < span id= "_id0:_id5:0:chatTex t"> Howdy< / span>
    < / update>
   < / updates>
21

Agenda

>   Web 2.0
>   Multi- user Ajax Demo
>   Push for enterprise collaboration
>   Asynchronous HTTP on the Wire
>   Asynchronous HTTP and the Server
>   Developing Asynchronous Applications
>   Conclusion
22

Servlet Thread Catastrophe
Strangled by a thread for every client.




GET / updates HTTP/ 1.1   GET / updates HTTP/ 1.1   GET / updates HTTP/ 1.1   GET / updates HTTP/ 1.1
                          Connection: keep- alive   Connection: keep- alive   Connection: keep- alive
Connection: keep- alive


                          HTTP/ 1.1 200 OK

                          < updates>
                           …
                          < / updates>
23

Architecture Challenges
The serious effect of blocking threads.




                                          (default thread
                                          stack size)
24

Server- side Ajax Push: Who supports
what
The asynchronicity matrix.

Container     Asynchronous IO Suspendible    Delivery
                               Request /    Guarant ee
                               Response


Jet ty                             X
Tomcat               X             X
GlassFish            X             X            X
Resin                              X
WebLogic                           X
25

Jetty
service() will resume shortly.

  import org.mortbay.util.ajax.Continuation;

  service(request, response) {
      Continuation continuation = ContinuationSupport
          .getContinuation(request, this);
      ...
      continuation.suspend();
      response.getWriter().write(message);
  }


Asynchronously and elsewhere in t he application ...
  message.setValue(“Howdy”);
  continuation.resume();
26

Tomcat 6
Eventful Comet.
 import org.apache.catalina.CometProcessor;

 public class Processor implements CometProcessor {

 public void event(CometEvent event) {
     request = event.getHttpServletRequest();
     response = event.getHttpServletResponse();

     if   (event.getEventType()   ==   EventType.BEGIN)   {   ...
     if   (event.getEventType()   ==   EventType.READ)    {   ...
     if   (event.getEventType()   ==   EventType.END)     {   ...
     if   (event.getEventType()   ==   EventType.ERROR)   {   ...
 }
Asynchronously and elsewhere in the application ...
 message.setValue(“Howdy”);
 response.getWriter().write(message);
 event.close();
27


GlassFish
Suspend with Grizzly.
         CometContext context =
             CometEngine.getEngine().register(contextPath);
         context.setExpirationDelay(20 * 1000);

         SuspendableHandler handler = new SuspendableHandler();
         handler.attach(response);
         cometContext.addCometHandler(handler);

  class SuspendableHandler implements CometHandler       {

         public void onEvent(CometEvent event) {
            response.getWriter().println(event.attachment());
            cometContext.resumeCometHandler(this);
     }
 Asynchronously and elsewhere in the application ...
  message.setValue(“Howdy”);                        27
  cometContext.notify(message);


           03/ 07/ 2008
28

Servlet 3 .0
Future Asynchronous Standard.



>   Defined by JSR- 315 Ex pert Group
>   DWR, Jetty, Tomcat, GlassFish project, and ICEfaces participants
>   Standard asynchronous processing API being defined
    > Asynchronous I/ O
    > Suspendible requests
    > Delivery guarantee not included

>   Will improve portability of DWR, Cometd, and ICEfaces
>   (But unless you write Servlets today, this API will be hidden
    by your chosen Ajax framework.)
29

Agenda

>   Web 2.0
>   Multi- user Ajax Demo
>   Push for enterprise collaboration
>   Asynchronous HTTP on the Wire
>   Asynchronous HTTP and the Server
>   Developing Asynchronous Applications
>   Conclusion
30

JavaScript Polling
Are we there yet? Are we there yet? Are we there yet? ...



   function poll() {
     setTimeout(‘poll()’, 10000);
     req = new XMLHttpRequest();
     req.onreadystatechange = update();
     req.open(“POST”, “http://server/getMessage.jsp”);
   }

   function update() {
     chatLog.innerHTML = req.responseText;
   }

   poll();
31

Cometd
Distributed, loosely coupled, scripting
   function update(message) {
     chatLog.innerHTML = message.data.value;          JavaScript
   }
   ...
     cometd.subscribe(“chat”, remoteTopics, “update”)
     cometd.publish(“chat”, message)


   import dojox.cometd.*;
                                                            Java
   Channel channel = Bayeux.getChannel(“chat”, create);
   channel.subscribe(client);

 Asynchronously and elsewhere in t he application ...
   message.setValue(“Howdy”);
   channel.publish(client, message, “chat text”);
32

DWR
JavaScript RPC


   import org.directwebremoting.proxy.dwr.Util;

   scriptSessions =
       webContext.getScriptSessionsByPage(currentPage);
       util = new Util(scriptSessions);

To “Reverse Ajax ” and invoke arbit rary JavaScript :
   util.addScript(ScriptBuffer script);



Asynchronously and elsewhere in the application ...
   util.setValue(“form:chat:_id3”, “Howdy”);
33

ICEfaces
Preserve MVC with Transparent Ajax.

           PageBean.java                               Page.x html
public class PageBean {            <f:view
   String message;                    xmlns:f=“http://java.sun.com/jsf/core”
                                      xmlns:h="http://java.sun.com/jsf/html“ >

    public String getMessage() {     <html>
       return message;                 <body>
                                         <h:form>
    }                                       <h:inputText
                                               value=“#{pageBean.message}” />
   public void setMessage(String         </h:form>
message) {                             </body>
      this.message = message;        </html>
   }
                                   </f:view>

}      Presentation Model                      Declarative User Interface

    A language for Ajax Push that preserves Designer and Developer
       roles
34

ICEfaces
High level push.
   import org.icefaces.application.SessionRenderer;

 To updat e all users in t he application:
   SessionRenderer.render(SessionRenderer.ALL_SESSIONS);


 Or t o keep t rack of groups of users:
   SessionRenderer.addCurrentSession(“chat”);

 Asynchronously and elsewhere in t he application ...
   message.setValue(“Howdy”);
   SessionRenderer.render(“chat”);

  The JSF lifecycle runs and each user’s page is
  updated from the component tree and current
  model state.
35

Agenda

>   Web 2.0
>   Multi- user Ajax Demo
>   Push for enterprise collaboration
>   Asynchronous HTTP on the Wire
>   Asynchronous HTTP and the Server
>   Conclusion
36

Summary
The Asynchronous Web Revolution is Now


>   The Asynchronous Web will revolutionize human interaction

>   Ajax Push is the key to enterprise collaboration for the Web

>   Push can scale with Asynchronous Request Processing

>   ICEfaces and edoras provide the high- level capabilities for enterprise
    collaboration features in your application

>   Visit us at the mimacom stand in the ex hibition to talk with the experts
    and see more demos
Thank you!                      Questions?
        The Asynchronous Web Revolution is Now




Micha Kiener                 http:/ / www.mimacom.ch
mimacom ag                   micha.kiener@mimacom.ch

Ted Goddard                  http:/ / www.icefaces.org
ICEsoft Technologies         ted.goddard@icesoft.com

Más contenido relacionado

La actualidad más candente

A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
DataLeader.io
 
Great Java Application Server Debate
Great Java Application Server DebateGreat Java Application Server Debate
Great Java Application Server Debate
Hamed Hatami
 
Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...
Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...
Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...
Microsoft
 
[peachpit] Adaptive Images in Responsive Web Design
[peachpit] Adaptive Images in Responsive Web Design[peachpit] Adaptive Images in Responsive Web Design
[peachpit] Adaptive Images in Responsive Web Design
Christopher Schmitt
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
Ariya Hidayat
 
WebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at GoogleWebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at Google
Robert Nyman
 
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011
Shreedhar Ganapathy
 
Front-end optimisation & jQuery Internals (Pycon)
Front-end optimisation & jQuery Internals (Pycon)Front-end optimisation & jQuery Internals (Pycon)
Front-end optimisation & jQuery Internals (Pycon)
Artur Cistov
 

La actualidad más candente (20)

Enough with the JavaScript already!
Enough with the JavaScript already!Enough with the JavaScript already!
Enough with the JavaScript already!
 
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
 
Great Java Application Server Debate
Great Java Application Server DebateGreat Java Application Server Debate
Great Java Application Server Debate
 
Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...
Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...
Java dans Windows Azure Cloud Services, big data avec hd insight et les nouve...
 
14. html 5 security considerations
14. html 5 security considerations14. html 5 security considerations
14. html 5 security considerations
 
Micronaut For Single Page Apps
Micronaut For Single Page AppsMicronaut For Single Page Apps
Micronaut For Single Page Apps
 
webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)
 
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
 
HTML5 WebSocket for the Real-Time Web and the Internet of Things
HTML5 WebSocket for the Real-Time Weband the Internet of ThingsHTML5 WebSocket for the Real-Time Weband the Internet of Things
HTML5 WebSocket for the Real-Time Web and the Internet of Things
 
What the Heck is OAuth and OpenID Connect - RWX 2017
What the Heck is OAuth and OpenID Connect - RWX 2017What the Heck is OAuth and OpenID Connect - RWX 2017
What the Heck is OAuth and OpenID Connect - RWX 2017
 
J web socket
J web socketJ web socket
J web socket
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5
 
[peachpit] Adaptive Images in Responsive Web Design
[peachpit] Adaptive Images in Responsive Web Design[peachpit] Adaptive Images in Responsive Web Design
[peachpit] Adaptive Images in Responsive Web Design
 
Spark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 WorkshopSpark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 Workshop
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
 
WebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at GoogleWebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at Google
 
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011
 
Front-end optimisation & jQuery Internals (Pycon)
Front-end optimisation & jQuery Internals (Pycon)Front-end optimisation & jQuery Internals (Pycon)
Front-end optimisation & jQuery Internals (Pycon)
 
Clojure Web Development
Clojure Web DevelopmentClojure Web Development
Clojure Web Development
 
Spark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RSSpark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RS
 

Destacado (10)

Building A Mini Google High Performance Computing In Ruby Presentation 1
Building A Mini Google  High Performance Computing In Ruby Presentation 1Building A Mini Google  High Performance Computing In Ruby Presentation 1
Building A Mini Google High Performance Computing In Ruby Presentation 1
 
Ruby on Windows - HOW TO install and set up
Ruby on Windows - HOW TO install and set upRuby on Windows - HOW TO install and set up
Ruby on Windows - HOW TO install and set up
 
J2EE Na Vida Real
J2EE Na Vida RealJ2EE Na Vida Real
J2EE Na Vida Real
 
One RubyStack to Rule them All
One RubyStack to Rule them AllOne RubyStack to Rule them All
One RubyStack to Rule them All
 
Model-Driven Software Development
Model-Driven Software DevelopmentModel-Driven Software Development
Model-Driven Software Development
 
Miami2012 cag
Miami2012 cagMiami2012 cag
Miami2012 cag
 
Implementing and Managing Accelerated Math In Lower Elementary
Implementing and Managing Accelerated Math In Lower ElementaryImplementing and Managing Accelerated Math In Lower Elementary
Implementing and Managing Accelerated Math In Lower Elementary
 
Shakouri 4 gwe keynote jan 2011
Shakouri 4 gwe keynote jan 2011Shakouri 4 gwe keynote jan 2011
Shakouri 4 gwe keynote jan 2011
 
Rapid Development with Ruby/JRuby and Rails
Rapid Development with Ruby/JRuby and RailsRapid Development with Ruby/JRuby and Rails
Rapid Development with Ruby/JRuby and Rails
 
Solid state 2
Solid state 2Solid state 2
Solid state 2
 

Similar a Ajax Push For Revolutionary Enterprise Applications

Developing Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax PushDeveloping Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax Push
Doris Chen
 
Data power v7 update - Ravi Katikala
Data power v7 update - Ravi KatikalaData power v7 update - Ravi Katikala
Data power v7 update - Ravi Katikala
floridawusergroup
 
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java DevelopersWebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
Viktor Gamov
 
Ajax basics
Ajax basicsAjax basics
Ajax basics
Vel004
 

Similar a Ajax Push For Revolutionary Enterprise Applications (20)

Developing Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax PushDeveloping Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax Push
 
Data power v7 update - Ravi Katikala
Data power v7 update - Ravi KatikalaData power v7 update - Ravi Katikala
Data power v7 update - Ravi Katikala
 
Micro service architecture
Micro service architectureMicro service architecture
Micro service architecture
 
Server side push in Aldan 3
Server side push in Aldan 3Server side push in Aldan 3
Server side push in Aldan 3
 
IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...
IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...
IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...
 
Real time web apps
Real time web appsReal time web apps
Real time web apps
 
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java DevelopersWebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008
 
The 'Serverless' Paradigm, OpenWhisk and FIWARE
The 'Serverless' Paradigm, OpenWhisk and FIWAREThe 'Serverless' Paradigm, OpenWhisk and FIWARE
The 'Serverless' Paradigm, OpenWhisk and FIWARE
 
The Serverless Paradigm, OpenWhisk and FIWARE
The Serverless Paradigm, OpenWhisk and FIWAREThe Serverless Paradigm, OpenWhisk and FIWARE
The Serverless Paradigm, OpenWhisk and FIWARE
 
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/CamelCamelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
 
Ajax basics
Ajax basicsAjax basics
Ajax basics
 
4163A - What is Web 2.0.ppt
4163A - What is Web 2.0.ppt4163A - What is Web 2.0.ppt
4163A - What is Web 2.0.ppt
 
Realtime with websockets
Realtime with websocketsRealtime with websockets
Realtime with websockets
 
Ajax Ppt 1
Ajax Ppt 1Ajax Ppt 1
Ajax Ppt 1
 
Websocket
WebsocketWebsocket
Websocket
 
Hybrid application development
Hybrid application developmentHybrid application development
Hybrid application development
 
Comet from JavaOne 2008
Comet from JavaOne 2008Comet from JavaOne 2008
Comet from JavaOne 2008
 
Ecom 1
Ecom 1Ecom 1
Ecom 1
 

Más de elliando dias

Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
elliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
elliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
elliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
elliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
elliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
elliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
elliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
elliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
elliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
elliando dias
 

Más de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

Ajax Push For Revolutionary Enterprise Applications

  • 1. Ajax Push For Revolutionary Enterprise Applications Micha Kiener mimacom ag Ted Goddard, Ph.D. ICEsoft Technologies 5420
  • 2. 2 Agenda > Web2.0 ™ > Multi- user Ajax Demo > Push for enterprise collaboration > Asynchronous HTTP on the Wire > Asynchronous HTTP and the Server > Developing Asynchronous Applications > Conclusion
  • 3. 3 What sort of revolution? “And yet it moves.” American Revolution French Revolution Dump everything in the bay Storm the Bastille Scientific Revolution Ex perimentation and Reason
  • 4. 4 Web 2 .0 A Web by the people, for the people. > Documents on the web increasingly generated by users > Out of the Information Age, into the Participation Age > As a whole, the World Wide Web is a collaborative environment, but individual pages are only weakly so > Are web user interfaces becoming more powerful? > Is the user an HTTP client?
  • 5. 5 Ajax Ajax is a state of mind. > It was AJAX (Asynchronous JavaScript™ Technology with XML) > or Asynchronous JavaScript technology with XMLHttpRequest > now it’s Ajax (not an acronym) because many different techniques satisfied the same goals > coined by Jesse James Garrett in 2005 to sell an insurance company on re- writing all their software > Is the web defined by the W3C or by browser implementers? (Ajax does not ex ist in W3C universe yet.) > Ajax decouples user interface from network protocol > Ajax is the leading edge of the user interface possible with current popular browsers > The user ex perience is important
  • 6. 6 The Asynchronous Web Revolution The Web enters the Participation Age. > Ajax is still typically synchronous with user events > Full asynchrony has updates pushed from server any time > Update pages after they load > Send users notifications > Allow users to communicate and collaborate within the web application > Called “Ajax Push”, “Comet”, or “Reverse Ajax ” - This is the full realization of Ajax , now fully asynchronous
  • 7. 7 Server- mediated Collaboration Ex ternal Application Server • User Initiat ed User Push Action Push Push • Application Init iated Micha Ted
  • 8. 8 Applications in the Participation Age Application- mediated communication. > Distance learning > Collaborative authoring > Auctions > Shared WebDAV filesystem > Blogging and reader comments > SIP- coordinated mobile applications > Hybrid chat/ email/ discussion forums > Customer assistance on sales/ support pages > Multi- step business process made collaborative > Shared trip planner or restaurant selector with maps > Shared calendar, “to do” list, project plan > Games > Enterprise shared record locking and negotiation
  • 9. 9 Agenda > Web 2.0 > Multi- user Ajax Demo > Push for enterprise collaboration > Asynchronous HTTP on the Wire > Asynchronous HTTP and the Server > Developing Asynchronous Applications > Conclusion
  • 10. 10 Asynchronous Ajax Demo GlassFish/ Grizzly with ICEfaces WebMC http:/ / webm c.icefaces.org/
  • 11. 11 Agenda > Web 2.0 > Multi- user Ajax Demo > Push for enterprise collaboration > Asynchronous HTTP on the Wire > Asynchronous HTTP and the Server > Developing Asynchronous Applications > Conclusion
  • 12. 12 Didn’t we have that already? Push- mechanisms in Rich- Clients > Rich- Clients connect ed t o the server in a keep- alive manner > Full Java- API is available wit hin t he client for networking and event- handling > Server can push an event to t he client any time > Eit her by having t he client polling for event s (opt ionally combined with a heart- beat, ping- like request) > Or by callback from t he server > Since the t echnology behind is well- known and t ransparent, its easy to use push for collaborative features and updat ing mechanisms > Rich- Clients were always claimed t o support push- features
  • 13. 13 Showcase for Push Rich- Client based demo > Collaboration t hrough edit ing and pessimist ic locking > A list of Person object s which may be edited and creat ed > Wit h pessimist ic locking, a lock- object must be obtained before t he object is editable > If the lock is held by another user, it should be possible t o not ify him so he can release t he lock > When dat a is changed, all views should be automat ically updat ed
  • 14. 14 Showcase for Push Features using Rich- Client Push or Ajax Push > Push in a Rich- Client (Demo) > Automatically updating changed / added / removed data sets > Collaborative notifications in the contex t of pessimistic locking
  • 15. 15 Showcase for Push Features using Rich- Client Push or Ajax Push > Wit h Ajax , people st ay longer on t he same page, hence aut omatic page update is needed > As the Web get s more and more social, collaborat ive t asks come in place > Updating and collaborat ion are inherently asynchronous and need some push- mechanism t o be fulfilled > The nex t demo shows the collaborative features of t he rich- client in an Ajax Push web- environment
  • 16. 16 Showcase for Push Features using Rich- Client Push or Ajax Push > Push in a Web- Client (Demo) > Automatically updating changed / added / removed data sets > Collaborative notifications in the contex t of pessimistic locking
  • 17. 17 Agenda > Web 2.0 > Multi- user Ajax Demo > Push for enterprise collaboration > Asynchronous HTTP on the Wire > Asynchronous HTTP and the Server > Developing Asynchronous Applications > Conclusion
  • 18. 18 Ajax Poll vs Ajax Push Bending the rules of HTTP.
  • 19. 19 Bayeux/ Cometd JSON Pub/ Sub. [ { "channel": "/some/name", "clientId": "83js73jsh29sjd92", "data": { "myapp" : "specific data", value: 100 } } ] > JSON Messages are published on specified channels > Channel operations: connect, subscribe, unsubscribe, etc. > Multiple transports: polling, long- polling, iframe, flash > Server implementations: Perl, Python, Java™ programming language > Server- side reflector with no server- side application possible
  • 20. 20 Ajax Push HTTP message flow inversion. GET / auctionMonitor/ block/ receive- updates?icefacesID= 1209765435 HTTP/ 1.1 Accept: */ * Cookie: JSESSIONID= 75CF2BF3E03F0F9C6D2E8EFE1A6884F4 Connection: keep- alive Host: vorlon.ice:18080 Chat m essage “Howdy” HTTP/ 1.1 200 OK Content- Type: text/ xml;charset= UTF- 8 Content- Length: 180 Date: Thu, 27 Apr 2006 16:45:25 GMT Server: Apache- Coyote/ 1.1 < updates> < update address= "_id0:_id5:0:chatTex t"> < span id= "_id0:_id5:0:chatTex t"> Howdy< / span> < / update> < / updates>
  • 21. 21 Agenda > Web 2.0 > Multi- user Ajax Demo > Push for enterprise collaboration > Asynchronous HTTP on the Wire > Asynchronous HTTP and the Server > Developing Asynchronous Applications > Conclusion
  • 22. 22 Servlet Thread Catastrophe Strangled by a thread for every client. GET / updates HTTP/ 1.1 GET / updates HTTP/ 1.1 GET / updates HTTP/ 1.1 GET / updates HTTP/ 1.1 Connection: keep- alive Connection: keep- alive Connection: keep- alive Connection: keep- alive HTTP/ 1.1 200 OK < updates> … < / updates>
  • 23. 23 Architecture Challenges The serious effect of blocking threads. (default thread stack size)
  • 24. 24 Server- side Ajax Push: Who supports what The asynchronicity matrix. Container Asynchronous IO Suspendible Delivery Request / Guarant ee Response Jet ty X Tomcat X X GlassFish X X X Resin X WebLogic X
  • 25. 25 Jetty service() will resume shortly. import org.mortbay.util.ajax.Continuation; service(request, response) { Continuation continuation = ContinuationSupport .getContinuation(request, this); ... continuation.suspend(); response.getWriter().write(message); } Asynchronously and elsewhere in t he application ... message.setValue(“Howdy”); continuation.resume();
  • 26. 26 Tomcat 6 Eventful Comet. import org.apache.catalina.CometProcessor; public class Processor implements CometProcessor { public void event(CometEvent event) { request = event.getHttpServletRequest(); response = event.getHttpServletResponse(); if (event.getEventType() == EventType.BEGIN) { ... if (event.getEventType() == EventType.READ) { ... if (event.getEventType() == EventType.END) { ... if (event.getEventType() == EventType.ERROR) { ... } Asynchronously and elsewhere in the application ... message.setValue(“Howdy”); response.getWriter().write(message); event.close();
  • 27. 27 GlassFish Suspend with Grizzly. CometContext context = CometEngine.getEngine().register(contextPath); context.setExpirationDelay(20 * 1000); SuspendableHandler handler = new SuspendableHandler(); handler.attach(response); cometContext.addCometHandler(handler); class SuspendableHandler implements CometHandler { public void onEvent(CometEvent event) { response.getWriter().println(event.attachment()); cometContext.resumeCometHandler(this); } Asynchronously and elsewhere in the application ... message.setValue(“Howdy”); 27 cometContext.notify(message); 03/ 07/ 2008
  • 28. 28 Servlet 3 .0 Future Asynchronous Standard. > Defined by JSR- 315 Ex pert Group > DWR, Jetty, Tomcat, GlassFish project, and ICEfaces participants > Standard asynchronous processing API being defined > Asynchronous I/ O > Suspendible requests > Delivery guarantee not included > Will improve portability of DWR, Cometd, and ICEfaces > (But unless you write Servlets today, this API will be hidden by your chosen Ajax framework.)
  • 29. 29 Agenda > Web 2.0 > Multi- user Ajax Demo > Push for enterprise collaboration > Asynchronous HTTP on the Wire > Asynchronous HTTP and the Server > Developing Asynchronous Applications > Conclusion
  • 30. 30 JavaScript Polling Are we there yet? Are we there yet? Are we there yet? ... function poll() { setTimeout(‘poll()’, 10000); req = new XMLHttpRequest(); req.onreadystatechange = update(); req.open(“POST”, “http://server/getMessage.jsp”); } function update() { chatLog.innerHTML = req.responseText; } poll();
  • 31. 31 Cometd Distributed, loosely coupled, scripting function update(message) { chatLog.innerHTML = message.data.value; JavaScript } ... cometd.subscribe(“chat”, remoteTopics, “update”) cometd.publish(“chat”, message) import dojox.cometd.*; Java Channel channel = Bayeux.getChannel(“chat”, create); channel.subscribe(client); Asynchronously and elsewhere in t he application ... message.setValue(“Howdy”); channel.publish(client, message, “chat text”);
  • 32. 32 DWR JavaScript RPC import org.directwebremoting.proxy.dwr.Util; scriptSessions = webContext.getScriptSessionsByPage(currentPage); util = new Util(scriptSessions); To “Reverse Ajax ” and invoke arbit rary JavaScript : util.addScript(ScriptBuffer script); Asynchronously and elsewhere in the application ... util.setValue(“form:chat:_id3”, “Howdy”);
  • 33. 33 ICEfaces Preserve MVC with Transparent Ajax. PageBean.java Page.x html public class PageBean { <f:view String message; xmlns:f=“http://java.sun.com/jsf/core” xmlns:h="http://java.sun.com/jsf/html“ > public String getMessage() { <html> return message; <body> <h:form> } <h:inputText value=“#{pageBean.message}” /> public void setMessage(String </h:form> message) { </body> this.message = message; </html> } </f:view> } Presentation Model Declarative User Interface A language for Ajax Push that preserves Designer and Developer roles
  • 34. 34 ICEfaces High level push. import org.icefaces.application.SessionRenderer; To updat e all users in t he application: SessionRenderer.render(SessionRenderer.ALL_SESSIONS); Or t o keep t rack of groups of users: SessionRenderer.addCurrentSession(“chat”); Asynchronously and elsewhere in t he application ... message.setValue(“Howdy”); SessionRenderer.render(“chat”); The JSF lifecycle runs and each user’s page is updated from the component tree and current model state.
  • 35. 35 Agenda > Web 2.0 > Multi- user Ajax Demo > Push for enterprise collaboration > Asynchronous HTTP on the Wire > Asynchronous HTTP and the Server > Conclusion
  • 36. 36 Summary The Asynchronous Web Revolution is Now > The Asynchronous Web will revolutionize human interaction > Ajax Push is the key to enterprise collaboration for the Web > Push can scale with Asynchronous Request Processing > ICEfaces and edoras provide the high- level capabilities for enterprise collaboration features in your application > Visit us at the mimacom stand in the ex hibition to talk with the experts and see more demos
  • 37. Thank you! Questions? The Asynchronous Web Revolution is Now Micha Kiener http:/ / www.mimacom.ch mimacom ag micha.kiener@mimacom.ch Ted Goddard http:/ / www.icefaces.org ICEsoft Technologies ted.goddard@icesoft.com