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 :

Rafraichissement côté client via EJB


Sujet :

Java EE

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 61
    Points : 44
    Points
    44
    Par défaut Rafraichissement côté client via EJB
    Bonjour,

    J'ai cette interface graphique faite via JavaFx :

    Nom : Capture d’écran 2018-09-22 à 19.05.31.png
Affichages : 217
Taille : 203,9 Ko

    Cette interface est installée sur plusieurs postes clients.
    Elle est en connection avec un serveur d'application (EJB et Wildfly 12).
    Sur ce serveur d'application, il y a une gestion de persistance avec hibernate.

    Voici les services proposés par mon EJB :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    @Stateless(name = "CONTACT")
    @LocalBean
    public class ContactBean implements ContactBeanRemote {
     
    	@PersistenceContext(unitName = "UP_BANQUE")
    	private EntityManager em;
     
    	@Override
    	public void add(Contact p) {
    		em.persist(p);
    	}
     
    	@Override
    	public List<Contact> getList() {
    		Query r = em.createQuery("SELECT p FROM Contact p");
    		return r.getResultList();
    	}
     
    	@Override
    	public Contact findById(Long id) {
    		EntityGraph<?> graph = em.getEntityGraph("graph.Contact");    
    		Map<String, Object> hints = new HashMap<String, Object>();
    		hints.put("javax.persistence.loadgraph", graph);
    		return em.find(Contact.class, id, hints);
    	}
     
    	@Override
    	public void edit(Contact p) {
    		em.merge(p);
    	}
     
    	@Override
    	public void remove(Long idP) {
    		Contact p = em.find(Contact.class, idP);
    		em.remove(p);
    	}
     
    }
    Maintenant, mon problème est le suivant.
    Quelle solution dois-je choisir pour faire un rafraichissement de mes postes clients ?

    Si, je clique, par exemple, sur un bouton d'enregistrement en changeant la valeur ''Contact 2'' en Contact x''.
    Comment la liste de mes contacts sur les autres postes clients pourrait-elle se mettre à jour automatiquement. (sans bouton F5, actualisation, ...)
    Un peu comme le principe du pattern Observer/Observable : un object rafraichit plusieurs composant.
    Mais ici, ce serait plutôt un client qui rafraichit les autres clients.

    J'ai pu lire certains articles sur le net concernant JMS, Message Driven, Servlet.
    Mais je ne vois pas trop comment faire et lequel choisir.
    Si l'on pourrait m'aiguiller sur les systèmes à choisir, je pourrais affiner mes recherches sur Google.

    Merci d'avance

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 80
    Points : 119
    Points
    119
    Par défaut
    Bonjour,

    Plusieurs solutions s'offrent à vous. Si j'ai bien compris, vous avez une architecture client/serveur.
    Le problème ne doit pas être vu : un client rafraîchit plusieurs client, mais, un client informe le serveur de rafraîchir les clients.
    Chaque client doit alors disposer d'un écouteur pour effectuer une mise à jour selon le besoin.
    En Java, vous avez plusieurs solutions pour échanger des messages :
    • JMS
    • RMI
    • Socket
    • Lecture en base de données
    • Web service
    • ...


    A voir comment souhaitez vous l'orchestrer dans votre application pour informer les clients :
    • Abonnement à un flux de message
    • Mettre un Thread à disposition en tant que écouteur
    • ...


    Prenez du temps pour réfléchir à l’architecture de votre application (crayon de papier et une feuille ) et ce que vous souhaitez mettre à jour (une vue du client, plusieurs vues, des informations du client...). Ensuite le choix de la technologie sera plus facile à aiguiller.
    Dans l'exemple d'un simple chat client/client, avec juste un envoie de message, la méthode par socket et un Thread servant d'écouteur est suffisant par exemple.

    Bonne journée

Discussions similaires

  1. Pb envoi de fichier vers client via "ServletOutputStream"
    Par fredos70 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/11/2006, 14h47
  2. [NIO] envoie d'image à plusieurs client via socket
    Par robert_trudel dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 01/10/2006, 23h11
  3. Réponses: 6
    Dernier message: 09/11/2005, 17h29
  4. [Visual Web] [SJS] Créer un client d'EJB
    Par bart64 dans le forum NetBeans
    Réponses: 1
    Dernier message: 02/12/2004, 15h10

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