Bonjour à tous,
J’aimerai implémenter le pattern observer avec les EJB3. Mon application cliente comporte une IHM en SWT et doit écouter une EJB session stateful qui effectue un calcul numérique plus ou moins long côté serveur. L’IHM doit tenir l’utilisateur informé de l’état du calcul : barre de progression, affichage de texte.
Dans un premier temps j’ai imaginé le pattern observer de façon classique : l’IHM implémente l’interface d’un écouteur et s’inscrit auprès de l’EJB session comme obervateur de celle-ci.
Or, les containers SWT ne sont pas sérialisables (Shell, Display, Composite, ProgressBar, ProgressMonitor, …) et quand bien même, la sérialisation ne fait qu’une copie de l’objet et il n’y a pas d’intérêt à utiliser une copie de l’objet côté serveur : aucun impact sur l’application cliente.
Il existe toujours la solution où l’IHM crée un thread pour demander périodiquement l’état de l’EJB session mais cette solution n’est pas le pattern observer. D’ailleurs, les EJB sessions stateful acceptent elles l’accès concurrent (accès du même client) sans problème ?
En faisant quelques recherches, j’ai découvert Java Message Service qui rend le même service qu’un pattern observer et apparemment sans que l’IHM doit être sérialisable. Mais je me demande s’il n’existe pas un moyen moins lourd.
Merci de votre aide.
Environnement : application cliente implémentée avec Eclipse RCP, EJB3 sous JBoss 4.2.1 , Java 1.6
Partager