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

Java EE Discussion :

Thread qui tourne en tâche de fond sur JBoss


Sujet :

Java EE

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Points : 239
    Points
    239
    Par défaut Thread qui tourne en tâche de fond sur JBoss
    Bonjour!

    Je travaille actuellement sur un projet qui s'appuie sur une Base de données temps réel. Je dois aller checker certaines valeurs stockées en base toutes les 5 secondes.
    J'ai une appli qui doit afficher les valeurs que je dois checker.

    Comme je ne veux pas que ce thread soit démarré à chaque fois que un client se connecte à l'application, je me suis dit qu'il est peut être possible de faire tourner un thread en tâche de fond sur le serveur... et que ce thread crée les objets java correspondant aux valeurs checkées et les mette a jour dans mon appli.

    Comme ca même si il y a 50 clients qui sont connectés à mon appli web, il n'y a qu'un thread qui fait un acces toutes les 5 secondes à la base de données....comme ca ca rame pas... parce que si j'ai je-ne-sais-combien d'accès simultané à la base de données, ben je pourrais pas afficher les valeurs en temps réel.... lol

    Quelqu'un peut me dire si cette idée est correcte ou si il y a un moyen de faire ca autrement et plus élégamment...ou si c'est impossible de faire ce que je viens de vous expliquer.... svp?

    Anne

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Points : 239
    Points
    239
    Par défaut
    Finalement j'ai fait un singleton dans mon pgm :

    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
    public class MySingleton { 
    private static MySingleton _instance; 
    private MyThread myThread; 
    private MySingleton() { 
    // construct object . . . 
    MyThread p = new MyThread(); 
    myThread=p; p.start(); } 
    // For lazy initialization 
    public static synchronized MySingleton getInstance() { 
    if (_instance==null) {
     _instance = new MySingleton(); 
    } 
    return _instance; 
    } 
    // Remainder of class definition . . . 
    /** * @return the myThread */ 
    public MyThread getMyThread() { 
    return myThread; 
    } 
    }
    sachant que MyTread c'est ca :

    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
    public class MyThread extends Thread { 
    private boolean running; 
    private int i;   
    MyThread() { 
    running=true; 
    i=0; 
    }   
    public void run() { 
    System.out.println("démarrage du thread"); 
    long millis = (long) (60*1000); 
    while(running){ 
    System.out.println("run number = "+i); 
    try{ 
    sleep(millis); 
    i++; 
    } 
    catch (InterruptedException e){ 
    System.out.println("exception sleep"); 
    } 
    } 
    } 
    }
    et dans la classe action ou j'ai besoin de récupérer les valeurs que le thread va consulter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MySingleton.getInstance();
    //... je récupère ce dont j'ai besoin
    maintenant quant à savoir si c'est du code propre....et surtout si c'est gênant parce que pas top pour une appli web.... j'en sais rien vu que j'avais encore jamais été amenée à utiliser les thread comme ca en j2ee

    voilà!!!

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Citation Envoyé par AnneB
    maintenant quant à savoir si c'est du code propre....et surtout si c'est gênant parce que pas top pour une appli web.... j'en sais rien vu que j'avais encore jamais été amenée à utiliser les thread comme ca en j2ee
    Salut,
    Eh bien, tu l'as un peu deviné, les threads ne se traitent pas comme ça pour une application j2ee. Il existe des API plus évoluées pour intégrer du scheduling dans ton application. Cela dépend un peu, selon que tu utilises des EJB ou pas. Pour une application ejb, tu as l'api EJB Timer qui est faite pour ça. Dans le cas contraire, tu as des frameworks comme Quartz qui te permettent également d'intégrer des tâches de fond dans ton application. Mais dans ce dernier cas, l'intégration est plus simple quand tu utilises Spring dans la couche métier (en remplacement des ejb...)
    Voilà, j'espère que ça puisse t'aiguiller.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment garder un thread qui tourne en tache de fond --> Actif
    Par FunckyWarrior dans le forum Android
    Réponses: 0
    Dernier message: 14/02/2013, 12h48
  2. appli qui tourne en tache de fond
    Par hunteshiva dans le forum VB.NET
    Réponses: 12
    Dernier message: 16/12/2011, 17h49
  3. Stopper une thread qui tourne à l'infini
    Par blacknight1985 dans le forum Général Java
    Réponses: 12
    Dernier message: 29/10/2011, 12h52
  4. Réponses: 0
    Dernier message: 11/03/2009, 17h30
  5. [Thread]Récupérer un Thread qui tourne
    Par thibaut dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 09/02/2006, 12h43

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