IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Multi Threading et FaceContext


Sujet :

JSF Java

  1. #1
    Membre expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Par défaut Multi Threading et FaceContext
    Pour utiliser l' a4j:push j'ai besoin d'un autre thread que celui du principale,
    (ce thread sera cree lors de reception d'un message JMS)
    le probleme reside lors du getCurrentInstance de FacesContext je recois null,
    es que quelqu'un a recontrer ca auparavant et comment il a resolu ce pbm.

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    un exemple de code ça peut aider..

  3. #3
    Membre expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Par défaut
    prenez l'exemple du push de richfaces :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <!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:f="http://java.sun.com/jsf/core"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:a4j="http://richfaces.org/a4j"
          xmlns:c="http://java.sun.com/jsp/jstl/core"
          >
          <body>
    	<f:view>
    	<a4j:push reRender="msg" eventProducer="#{messageBean.addListener}" interval="3000"/>
     
    	<h:dataTable  id="msg" value="#{messageBean.messages}" var="msg">
    	    <f:facet name="header"><h2>Messags : </h2></f:facet>
    	    <h:column>
    	      Message :
    	    </h:column>
    	    <h:column>
    	    <h:outputText value="#{msg}"></h:outputText>
    	    </h:column>
    	</h:dataTable>
    	<h:form>
    	<a4j:status startText="Request started" stopText="stop."></a4j:status>
    	</h:form>
    	<a4j:log hotkey="M"></a4j:log>
    	</f:view>
    	</body>
    </html>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    package com.sungard.irims;
     
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.EventListener;
    import java.util.EventObject;
    import java.util.List;
     
    import javax.faces.context.FacesContext;
     
    import org.ajax4jsf.event.PushEventListener;
     
    public class MessageBean implements Runnable {
     
    	private String result;
     
    	private boolean running = true;
     
    	private PushEventListener listener;
     
    	private List messages = new ArrayList(10);
     
    	private int counter = 0;
     
    	public MessageBean() {
    		// TODO Auto-generated constructor stub
    	}
     
    	/**
             * @return the result
             */
    	public String getResult() {
    		return result;
    	}
     
    	/**
             * @param result
             *            the result to set
             */
    	public void setResult(String result) {
    		this.result = result;
    	}
     
    	public void addListener(EventListener listener) {
    		synchronized (listener) {
    			if (this.listener != listener) {
    				this.listener = (PushEventListener) listener;
    				Thread th = new Thread(this);
    				th.start();
     
    			}
    		}
    	}
     
    	public void run() {
    		try {
    			while (isRunning()) {
    				Thread.sleep(10000);
    				Date current = new Date(System.currentTimeMillis());
    				if (messages.size() >= 10) {
    					messages.remove(0);
    				}
    				messages.add(messages.size(), String.valueOf(counter++)
    						+ " at " + current.toString());
    				System.out.println("event occurs");
    				if (FacesContext.getCurrentInstance()==null){
    					System.out.println("Pas de Faces Context");	
    				}
    				synchronized (listener) {
    					listener.onEvent(new EventObject(this));
    				}
    			}
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		}
     
    	}
     
    	/**
             * @return the running
             */
    	public synchronized boolean isRunning() {
    		return running;
    	}
     
    	/**
             * @param running
             *            the running to set
             */
    	public synchronized void setRunning(boolean running) {
    		this.running = running;
    	}
     
    	/**
             * @return the messages
             */
    	public List getMessages() {
    		return messages;
    	}
     
    	/**
             * @param messages
             *            the messages to set
             */
    	public void setMessages(List messages) {
    		this.messages = messages;
    	}
     
    }

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. Réponses: 2
    Dernier message: 15/05/2004, 18h33
  3. Réponses: 16
    Dernier message: 30/01/2004, 11h05
  4. [VB6][active x] faire du multi-thread avec vb
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/05/2003, 12h01
  5. [Kylix] exception qtinft.dll et multi-threading
    Par leclaudio25 dans le forum EDI
    Réponses: 3
    Dernier message: 27/03/2003, 18h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo