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

JSF Java Discussion :

Manipuler des Threads dans un ManagedBean


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 153
    Par défaut Manipuler des Threads dans un ManagedBean
    Bonjour Tout le monde,
    je suis un peux confus face à une décision à prendre.
    Mon application JSF + EJB gère une table de notification des utilisateurs lors de l'arrivé de certains évènement les concernant dans l'application;
    tout comme dans la messagerie yahoo où il y a une notification qui me signale l'arrivé d'un nouveau mail. Je voudrai de la même façon notifier l'utilisateur connecter s'il un évènement le concernant se produit.
    L'idée intuitive qui me traverse l'esprit est de créer un thread dans un bean session pour chaque utilisateur qui va interroger la table périodiquement. mais je lis partout qu'il est déconseillé d'utiliser les threads en environnement web. alors je viens vers vous pour savoir comment puis-je implémenter cette fonctionnalité? Je vous remercie d'avance

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Pourquoi tu veux faire un Thread? Il suffit qu'a chaque fois que le client fait une demande à ton jsf, tu vérifie la table à ce moment là. Pour afficher chez le client, il faudra de toutes façons que ce client fasse une demande de rafraichissement d'information. Même si tu faisait un Thread qui aille lire la base de données régulièrement, comment ce thread serait capable de pousser cet information vers le navigateur??

  3. #3
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,
    Citation Envoyé par mysianne Voir le message
    mais je lis partout qu'il est déconseillé d'utiliser les threads en environnement web. alors je viens vers vous pour savoir comment puis-je implémenter cette fonctionnalité?
    Je dirais que cela dépend de la version de java EE avec laquelle tu travailles.
    En effet, pour java EE 6 et antérieur, il n'y avait rien qui permettait de géré correctement les threads donc il est effectivement déconseillé de les utiliser, mais depuis java EE 7 il y a :

    Il est donc tout à fait possible de les utiliser.


    Citation Envoyé par mysianne Voir le message
    Je voudrai de la même façon notifier l'utilisateur connecter s'il un évènement le concernant se produit.
    L'idée intuitive qui me traverse l'esprit est de créer un thread dans un bean session pour chaque utilisateur qui va interroger la table périodiquement.
    Le problème est que potentiellement ta thread fera des requêtes sur ta base même s'il y a aucune notification. Il est possible d'envisager une autre solution via l'utilisation d'un trigger au niveau de la base de données, bien évidement cela dépend du SGBD que tu utilises ! L’avantage du trigger est qu'il déclenchera une action que lorsque cela sera nécessaire.

    Citation Envoyé par tchize_ Voir le message
    comment ce thread serait capable de pousser cet information vers le navigateur??
    Cela peux très bien ce faire via du push, et en plus de façon très simple
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 153
    Par défaut
    Il est vrai que la pertinence de l'utilisation des threads dans ce que peut se discuter. et je prend très sérieusement en compte ta suggestion tchize_. cependant,
    Il est possible d'envisager une autre solution via l'utilisation d'un trigger au niveau de la base de données, bien évidement cela dépend du SGBD que tu utilises ! L’avantage du trigger est qu'il déclenchera une action que lorsque cela sera nécessaire.
    comment l'utilisateur sera-t-il informé des changement effectuer par le trigger sans interroger la base de donnée de l'une des manière évoquée?
    Cela peux très bien ce faire via du push, et en plus de façon très simple
    peux-tu s'il te plait m'en dire d'avantage au sujet de ce push? je ne sais pas en quoi ça consiste.

  5. #5
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    Citation Envoyé par mysianne Voir le message
    comment l'utilisateur sera-t-il informé des changement effectuer par le trigger sans interroger la base de donnée de l'une des manière évoquée?
    Certaines bases de données permet d'appeler des programmes externes, voir même des services web lors du déclenchement du trigger !
    Le trigger est déclencher par la base de données pour effectué des actions sur insertion, update, ...
    Pour le trigger report toi à la documentation de ta base de données.


    Citation Envoyé par mysianne Voir le message
    peux-tu s'il te plait m'en dire d'avantage au sujet de ce push? je ne sais pas en quoi ça consiste.
    Le principe est simple, le push est un événement déclenché coté serveur, pour effectué une action coté navigateur comme par exemple rafraichir une partie de ta page, afficher un message, ...
    Le push est basé sur les websockets, les frameworks JSF on chacun leur façon de les utiliser !
    Moi j'utilise primefaces et il y a un exemple d'utilisation du push ici.

    Un exemple de scenario (si ta base à la capacité de le faire) :
    • un trigger sur la table de notification lors d'une insertion
    • un service web sur le serveur permettant d'être informé d'une notification
    • Le service web déclenche le push
    • l'interface web affiche le message


    Maintenant cela dépend de ce que propose ta base de donnée pour l'exécution d'actions externes, et aussi si tu utilises un framework JSF !
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 153
    Par défaut
    Merci pour le tuyau Alkhan j'utilise bien JSF et Primefaces, et ma base de données est sous postgres sql. je vais de suite voir les possibilités des trigger là. ça ma l'air tellement interessant se que tu me dis que je suis tout exité !

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 153
    Par défaut
    j'ai beau regardé et je ne sais toujours pas si postgres autorise une telle manipulation. si t'a des infos dessus, et surtout des exemple pour me faciliter la compréhension. Merci encore

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/11/2007, 15h02
  2. Problème d'utilisation des threads dans mes servlets
    Par casho dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 08/08/2007, 19h34
  3. manipuler des checkbox dans un gridview
    Par intissar_g dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/05/2007, 08h23
  4. Manipuler des chaînes dans un tableau
    Par cirtey dans le forum C
    Réponses: 5
    Dernier message: 01/03/2007, 22h08
  5. Comment Manipuler des objets dans une liste de type TList ?
    Par PadawanDuDelphi dans le forum Delphi
    Réponses: 1
    Dernier message: 02/11/2006, 15h40

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