RichFaces Ajax Push

RichFaces Ajax Push

RichFaces Ajax Push


Yeni nesil ajax mimarilerinde öne çıkan teknolojilerden biride Server Push teknolojisidir. Özellikle asenkron çalışan uygulamalarda istemcilerin sürekli sorgulama yaparak yoğunluk yaratmaması adına push teknolojisi kullanılabilir. Buna göre istemci sadece sunucuda değişiklik olduğu durumlarda talepleri alır. Bunun dışında talepler 0 kb olarak görünür. Buna pull benzeri gibi tekrar yenilemek yerine sadece sunucu tarafındaki değişlik anında işlem yapılır.
RichFaces kullanıyorsanız push kullanımı için a4j:push tagi işinizi görecektir. Bununla ilgili bir örnek aşağıda bulunmakta.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
     xmlns:h="http://java.sun.com/jsf/html"
     xmlns:f="http://java.sun.com/jsf/core"
     xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:a4j="http://richfaces.org/a4j"
          xmlns:rich="http://richfaces.org/rich">
     
    <body>
     <h:form>
      <a4j:push eventProducer="#{push.addListener}" reRender="random" />
      <br />
      <h:outputText value="#{push.random}" id="random"/>
     </h:form>
    </body>
    </html>
     
    import java.util.EventListener;
    import java.util.EventObject;
    import java.util.Random;
     
    import org.ajax4jsf.event.PushEventListener;
     
     
    public class PushBean implements Runnable {
     
     PushEventListener listener;
     private Thread thread;
     private Integer random = 0;
     
     public void addListener(EventListener listener) {
      synchronized (listener) {
       if (this.listener != listener) {
        this.listener = (PushEventListener) listener;
       }
       start();
      }
     }
     
     public void run() {
      while (thread != null) {
       try {
        random = new Random().nextInt(5000);
        listener.onEvent(new EventObject(this));
        Thread.sleep(random);
       } catch (InterruptedException e) {
         e.printStackTrace();
       }
      }
     }
     
     
     public void start() {
      if (thread == null) {
       thread = new Thread(this);
       thread.setDaemon(true);
       thread.start();
      }
     }
     
     public void stop() {
      if (thread != null) {
       // thread.stop();
       thread = null;
      }
     }
     
     public void setRandom(Integer random) {
      this.random = random;
     }
     
     public Integer getRandom() {
      return random;
     }
    }
No comments yet.

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>