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.