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

Servlets/JSP Java Discussion :

Traitement asynchrone dans une servlet ?


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 168
    Par défaut Traitement asynchrone dans une servlet ?
    Bonjour.

    Je suis en train de mettre en place un système de commentaires "à la facebook" : lorsqu'un utilisateur poste un commentaire, il est inséré en base et un mail est envoyé à tous les participants de cette discussion.

    L'ajout du commentaire se fait via une action struts appelé en AJAX. Quand je reçois le retour de cette action, j'affiche le commentaire sur la page.

    Dans l'action struts, l'insertion en base est rapide mais l'envoi de mails est lent. Je voudrais exécuter l'envoi de mail dans un thread, pour que l'exécution de l'action soit plus rapide.

    Comment faire ?

    Merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Tu as répondu à ta question, crées un nouveau thread, après ton insertion en base, et qui s'occupera d'envoyer tes emails.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 168
    Par défaut
    Merci de ta réponse.

    Je n'avais pas trouvé un exemple clair mais je l'ai trouvé après avoir posté.
    Pour les intéressés :

    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
    public class csj01x2 implements Runnable {
       public static void main(String args[]) throws Throwable {
    	   System.out.println("debut traitement");
          csj01x2 obj1 = new csj01x2();
          new Thread(obj1).start();
          // main thread is ending here,
          // Thread-0 and Thread-1 continue to run.
          System.out.println("suite traitement");
       }
     
       public void run() {
          try {
             for (int i=0; i<3; i++) {
                System.out.println("envoi du mail en cours ... "+i);
                Thread.sleep(500);
             }
          } catch (Throwable t) { }
       }
    }

  4. #4
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Bonjour,

    L'envoi de courriel par une thread ne me plait pas beaucoup. Il est vrai que c'est une solution facile.

    Si j'avais à faire ce travail, j'opterai pour une solution où l'envoi du courriel est indirect. Je m'explique, le courriel est écrit dans un un fichier texte dans un répertoire appelé spool/mail/tosend.

    Un programme indépendant scrute ce dernier répertoire à intervalle régulier et envoie les courriels. Si un courriel ne pas être envoyé (serveur SMTP pas disponible ou renvoyant une erreur), le programme écrit le courriel dans un fichier texte dans le répertoire spool/mail/undelivrable.

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

Discussions similaires

  1. Traitement asynchrone dans une methode void
    Par topolino dans le forum ASP.NET
    Réponses: 4
    Dernier message: 07/05/2013, 23h10
  2. Traitement asynchrone dans une application serveur
    Par ZouBi dans le forum Développement Web en Java
    Réponses: 10
    Dernier message: 03/11/2012, 09h59
  3. [applet]utilser des infos pour les traiter dans une servlet
    Par jeromejanson dans le forum Applets
    Réponses: 5
    Dernier message: 07/03/2010, 23h22
  4. Réponses: 4
    Dernier message: 04/12/2008, 20h46
  5. [Session]Récupération d'une session dans une servlet
    Par frizby dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 18/11/2005, 17h02

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