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 :

enlever de ma facade distante les méthodes addXX/getXX.. de mes entity beans locales


Sujet :

Java EE

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 18
    Points : 8
    Points
    8
    Par défaut enlever de ma facade distante les méthodes addXX/getXX.. de mes entity beans locales
    Bonjour à tous,



    Voilà j' ai une petite question technique.
    J' ai environ 15 entity beans et je n'ai créé qu'un seule facade.(facade distante)

    Ma question est de savoir comment puis je simplifier la lisibilité et la compréhension de ma facade distante.
    Ce que je veux dire c'est que dans cette dernière est présent toutes les méthodes add/remove/list.. de mes entity beans. Cela fait donc nbEntityBeans * 4 methodes dans ma facade sans compter les méthodes métiers nécessaires.

    Pour résoudre ce problème, j' ai pensé à plusieurs choses et j'aimerai savoir ce que vous ne penser.

    1) creer des sessions beans stateless locales pour mes entity beans locales. Ces sessions beans locales seront ensuite reliées a ma facade (principale) distante.

    2) Création d'un entity bean A effectuant un lien avec entity bean B, C.
    Ainsi seule le bean A fera les actions sur B,C. En répétant cette opération (ou hiérarchisation) nous passerons au final que les entity "meres" a la facade distante.

    Voila qu'en pensez vous? Avez vous d'autres idées.??

  2. #2
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Si j'ai bien tout compris, la meilleure solution est la solution 1, puisqu'il existe un design pattern associé et reconnu : les Helper

    En fait ton session de facade va communiquer avec plusieurs plus petits session bean stateless qui s'occuperont chacun d'un travail précis (genre : manipulation de l'entity bean toto...).

    Ca c'est si j'ai bien tout compris, car je ne l'ai pas encore implémenté (mais ca ne saurait tarder) et donc je n'ai aucune expérience en la matière... Cependant c'est ce que j'ai lu et compris

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    donc il existe un pattern pour cela... ok je vais fouiller du coté du pattern que tu m'as cité.
    mais pourquoi ne l'as tu jamais implémenté? est ce que c'est utile de séparer les méthodes d'un bean dans une classe temporaire??

  4. #4
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Je ne l'ai jamais implémenté car je n'en suis pas encore à cette étape
    Je débute moi aussi en EJB

    C'est tout

    Mais c'est prévu

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    ok!! mais comment es tu sûr que c'est ce pattern qu'il faut utiliser et pas un autre?? tu as un cours dessus?

  6. #6
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    J'ai reçu le conseil d'un professeur... Et c'est pour ça que je soumet quelques réserves puisque personnellement je ne l'ai jamais utilisé... donc si un autre lecteur de ce topic pouvait donner son avis

    Cependant, ce design pattern me paraît logique et efficace, donc tout bon

    En plus il est pas du tout compliqué à mettre en place et raccourcira vraiment la taille de ton session facade tout en séparant mieux les rôles et sans pertes de performances

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Citation Envoyé par cyrilforever
    Bonjour à tous,

    Voilà j' ai une petite question technique.
    J' ai environ 15 entity beans et je n'ai créé qu'un seule facade.(facade distante)

    Ma question est de savoir comment puis je simplifier la lisibilité et la compréhension de ma facade distante.
    Ce que je veux dire c'est que dans cette dernière est présent toutes les méthodes add/remove/list.. de mes entity beans. Cela fait donc nbEntityBeans * 4 methodes dans ma facade sans compter les méthodes métiers nécessaires.

    Pour résoudre ce problème, j' ai pensé à plusieurs choses et j'aimerai savoir ce que vous ne penser.

    1) creer des sessions beans stateless locales pour mes entity beans locales. Ces sessions beans locales seront ensuite reliées a ma facade (principale) distante.

    2) Création d'un entity bean A effectuant un lien avec entity bean B, C.
    Ainsi seule le bean A fera les actions sur B,C. En répétant cette opération (ou hiérarchisation) nous passerons au final que les entity "meres" a la facade distante.

    Voila qu'en pensez vous? Avez vous d'autres idées.??
    Salut,
    D'abord je voudrais dire que si tu as au moins 15 entity beans, il me semble peu probable que tous ces entity beans participent à un seul cas d'utilisation. Il n'est pas recommandé d'avoir un seul session façade pour toute l'application, mais au moins un session façade par cas d'utilisation. Et à partir de là tu verras qu'il n'y aurait plus que deux voire trois entity beans à relier à chacun des session façade. Ensuite un session façade ne devrait pas exposer toutes les méthodes get/set des entity beans qu'il est censé encapsuler, mais il doit présenter plutot des méthodes "coarse-grained" qui ensuite font appel aux entity beans pour composer et générer le résultat à renvoyer au client. Si tu développes en EJB 2.x tu pourrais aussi faire usage du pattern "Data Transfer Object" pour le transfert de données entre la couche métier et la couche présentation, ce qui te permettrait de composer des données dans le session façade à partir des entity beans pour les renvoyer dans un seul objet à la couche présentation.
    Voilà à peu près ce que je peux dire pour l'instant.
    Bon courage.
    SCJP 5 / SCBCD 1.3 Certified

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    ok. donc il y a deux solutions distinctes l'une de l autre:

    1) pattern: helper.
    2) ou décomposer mon appli en plusieurs facades dont chacune correspond a un cas d'utilisation.

    Mais utiliser plusieurs facades n'entraine t il pas des problèmes de performances? Qu'y a t il de différents(avantages,e t inconvénients) entre l'utilisation des helpers?

    PS: je développe en ejb 2.1

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Citation Envoyé par cyrilforever
    ok. donc il y a deux solutions distinctes l'une de l autre:

    1) pattern: helper.
    2) ou décomposer mon appli en plusieurs facades dont chacune correspond a un cas d'utilisation.

    Mais utiliser plusieurs facades n'entraine t il pas des problèmes de performances? Qu'y a t il de différents(avantages,e t inconvénients) entre l'utilisation des helpers?

    PS: je développe en ejb 2.1
    Je ne sais pas de quel "Helper" il s'agit ici, le pattern J2EE que je connaisse avec un nom similaire c'est le "View Helper" qui est plutot un pattern de la couche présentation. Mais en tout cas, concernant ta solution 1) qui consiste à mettre des session beans entre le session façade et les entity beans, c'est ni plus ni moins que l'ajout d'une couche d'indirection de plus, et cela dépend de la taille de ton projet. Plus le projet est de grande taille, plus tu auras besoin d'ajouter des couches d'indirection pour plus de lisibilité et de facilité de maintenance, mais si le projet est petit le session façade peu directement accéder aux entity beans. Dans le jargon des patterns J2EE, ta solution 1) correspond au pattern "Application Service" (voir livre "J2EE Patterns, 2nd edition"). Mais peu importe vraiment la façon dont tu le nommes, l'important c'est que ton code soit bien structuré.
    Concernant le nombre des session façade dans ton application, c'est comme je l'ai dit, tu peux en avoir autant que tu as des cas d'utilisation, chacun gérant l'ensemble des interactions utilisateur liées à un cas d'utilisation. Il n'y a aucun problème de performance, au contraire, puisque chaque session façade ne s'occupe que d'un ensemble de taches liées entre elles. Tu gagnes en lisibilité et en cohérence pour ton code.
    Tu utilises EJB 2.1, alors pense aussi aux DTO (Data Transfer Object), c'est la meilleure façon de transférer les données entre les différentes couches de ton application.
    Voilà, bon courage.
    SCJP 5 / SCBCD 1.3 Certified

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    merci de ta réponse claire et précise. En utilisant plusieurs facades, et la DTO, je peux si besoin est rajouter une couche d'indirection via des sessions beans stateless entre ma facade1 et des entity beans, cest bien ca?!

Discussions similaires

  1. JAAS Autorisations sur les méthodes distantes
    Par kubowsky dans le forum Wildfly/JBoss
    Réponses: 0
    Dernier message: 10/06/2009, 10h09
  2. Les méthodes abstraites et les interfaces
    Par ETI-trian dans le forum Langage
    Réponses: 3
    Dernier message: 17/01/2006, 12h14
  3. [EJB2.1 Entity] [BMP] les requetes doivent-elles se trouver directement dans les méthodes ?
    Par webspeak dans le forum Java EE
    Réponses: 2
    Dernier message: 24/03/2005, 08h34
  4. [Interface] Appeller toutes les méthodes héritées d'un class
    Par thibaut.d dans le forum Général Java
    Réponses: 4
    Dernier message: 25/01/2005, 08h42
  5. Utiliser les méthodes des boutons crées en rafale.
    Par kabouns dans le forum Composants
    Réponses: 8
    Dernier message: 03/12/2004, 10h48

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