Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1602 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Laisser tourner un thread en fin de session

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Laisser tourner un thread en fin de session

n°1923075
Gilgamesh ​d'Uruk
Lui-même
Posté le 10-09-2009 à 17:47:32  profilanswer
 

Bonjour,

 

voila, je voudrais que mon appli web (qui tourne sur jboss) lance une tache tous les jours.

 

Pour cela j'ai fait une classe Reveil du type TimerTask

 

public class Reveil extends TimerTask {

 

   private volatile boolean continuer = true;
   
    public Reveil(){
        continuer = true;
    }
    public void stopper(){
        continuer = false;
    }
    public void executer(){
        try {
              (tache à effectuer...)
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

 

   public void run() {
    while (continuer) {
      executer();
   
    }
  }

 

J'invoque Reveil dans une Action, et pour pouvoir le stopper je le place en session.

 
 

public class ReveilAction extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form,
                                    HttpServletRequest request,
                                    HttpServletResponse response) {
...
        Timer t = new Timer();
        Reveil r = (Reveil) request.getSession().getAttribute("reveil" );
            if(r==null){
            r = new Reveil();
            request.getSession().setAttribute("reveil",r);
            }
            GregorianCalendar gc = new GregorianCalendar();
            gc.add(Calendar.DAY_OF_YEAR, 1);
            t.scheduleAtFixedRate(r, gc.getTime(), 1);
...

 
 

et je l'arrête avec :

 


r.stopper();
System.out.println("reveil off" );

 

Je peux la lancer, l'arrêter, c'est cool.

 

Mais ce que je voudrais c'est que quand la session s'acheve, cette tache continue de tourner.

 

Est ce possible ?

 

Est ce que je peux placer la variable r comme variable d'application pour qu'elle reste en mémoire quand je me déconnecte ?

 

merci

 

a+


Message édité par Gilgamesh d'Uruk le 10-09-2009 à 18:18:50

---------------
Nation spatiale : la chaîne de l'Arche interstellaire.
mood
Publicité
Posté le 10-09-2009 à 17:47:32  profilanswer
 

n°1923160
cbeyls
Hail to the King, Baby
Posté le 11-09-2009 à 01:03:47  profilanswer
 

Salut,
 
Je pense que cet article pourrait t'aider (ton cas est un peu différent puisque c'est une action de l'utilisateur qui lance la TimerTask et ensuite il faut garder sa référence pour pouvoir l'arrêter).
 
En gros tu dois stocker ton instance de Reveil directement dans ta servlet et pas dans ta session. Tant que ta servlet tourne, l'action de la TimerTask continuera à s'exécuter. Si tu en as plusieurs à faire tourner, par exemple une par utilisateur, tu peux les stocker dans une hashmap par exemple.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Laisser tourner un thread en fin de session

 

Sujets relatifs
probleme thread linux (pthread)probleme session php - header tout ca.
vector et thread safeProfiling thread & deadlock
Cannot send session cookie et Cannot send session cache limitersocket pas thread safe sous linux ? si en fait (resolu)
session perdue après un window.location [pas encore résolu :( ]SSL_SESSION_ID introuvable
Variable de Session avec Inputrecuperation d'une session a partir d'un fichier pcap
Plus de sujets relatifs à : Laisser tourner un thread en fin de session


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR