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

Développement Web en Java Discussion :

Traitement asynchrone dans une application serveur


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de ZouBi
    Inscrit en
    Octobre 2007
    Messages
    508
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 508
    Par défaut Traitement asynchrone dans une application serveur
    Bonjour,
    Aujourd'hui je me retrouve face à un problème. Dans une application serveur en JEE tournant actuellement sous Glassfish ; je vais devoir exécuter des traitements qui pourront durer aux alentours de 5 minutes.
    Ainsi, il va falloir que je trouve une solutio car je ne peux pas laisser le client attendre que sa page se charge après 5 secondes... De toute manière, une page d'erreur time out s'affichera bien avant.
    Ainsi, comment puis-je t-il procéder?
    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
    - utiliser un nouveau thread à partir de ta servlet
    - utiliser un ejb session bean asynchrone (il te faut un container compatible ejb 3.1)

  3. #3
    Membre chevronné
    Avatar de ZouBi
    Inscrit en
    Octobre 2007
    Messages
    508
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 508
    Par défaut
    Bonjour et merci.
    Concernant l'ouverture d'un Thread dans un servlet? N'est-ce pas dangereux?
    Ce thread, après un traitement long exécuté par une fonction JNI, devra à la fin mettre à jour un champ dans une base de donnée (pour indiquer le résultat du traitement).
    J'utilise les datasources de Glassfish pour faire mes connexion à la base de données. Se servir de cette datasource en dehors du thread principale ne cause pas de soucis?

    Concernant le second choix, j'ai vu sur le net que J2EE 3 implémentait les taches asynchrones, mais je n'ai pu réussir à trouver de tutoriels sur le net. Aurais-tu une piste?

    Je suis aussi tombé sur l'idée du JMS mais ça me parait trop bien compliquer à mettre en tache pour simplement une seule tache qui se fera en asynchrone.

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tu parles d'EJB 3 plutôt que JavaEE 3 j'imagine

    http://javahowto.blogspot.fr/2010/03...in-ejb-31.html

  5. #5
    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
    Il n'y a, à priori pas de risque à utiliser un thread à part, pas plus que ton datasource, à partir du moment ou tu traites biens les ouvertures, fermetures de connexions et tes exceptions.

    JMS n'est pas si compliqué que cela, mais effectivement un peu plus que les deux autres solutions.

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Il n'y a, à priori pas de risque à utiliser un thread à part, pas plus que ton datasource, à partir du moment ou tu traites biens les ouvertures, fermetures de connexions et tes exceptions.
    Tout va dépendre de ton serveur d'application et de sa gestion des contexte. Par exemple Websphere, suivant la façon dont tu essaies de récupérer une ressource JNDI depuis le contexte te donnera accès (ou pas) à cette ressource si tu te trouves dans un Thread labellisé JavaEE (donc émis par websphere) ou un thread normal.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/06/2014, 22h01
  2. Traitement asynchrone dans une methode void
    Par topolino dans le forum ASP.NET
    Réponses: 4
    Dernier message: 07/05/2013, 23h10
  3. Traitement asynchrone dans une servlet ?
    Par aurelientp dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 20/05/2011, 17h29
  4. Réponses: 4
    Dernier message: 04/12/2008, 20h46
  5. Réponses: 2
    Dernier message: 12/10/2004, 13h04

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