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 :

Architecture d'une application Web


Sujet :

Développement Web en Java

  1. #1
    Membre habitué Avatar de le Daoud
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2002
    Messages : 287
    Points : 169
    Points
    169
    Par défaut Architecture d'une application Web
    Bonjour,

    Je m'occupe de la maintenance d'une application utilisant notamment Struts et des EJBs.
    Le découpage est fait de la sorte :
    Côté Web : Action appelant un ServiceDelegate
    Côté business : un Bean appelé par le ServiceDelegate, qui appelle un Service (qui appelle éventuellement des DAO).

    Je n'arrive pas à saisir l'intérêt de la couche Service utilisée par les EJBs. En effet, les méthodes de l'ejb et du service sont les mêmes, donc l'ejb ne fait rien, hormis appeler le service. Je suis perplexe. Auriez-vous une idée ?

    Merci

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Les EJB sont surement utilisés pour la gestion "automatique" des transactions.
    Chaque méthode de ton EJB session peut faire partie d'une transaction.
    Ceci est déclaré dans le ejb-jar.xml.

  3. #3
    Membre habitué Avatar de le Daoud
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2002
    Messages : 287
    Points : 169
    Points
    169
    Par défaut
    Je te mets un exemple de déclaration d'ejb du fichier ejb-jar.xml :

    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
     
    <session >
             <description><![CDATA[...]]></description>
             <display-name>Civilite EJB</display-name>
     
             <ejb-name>Civilite</ejb-name>
     
             <home>a.b.c.CiviliteHome</home>
             <remote>a.b.c.Civilite</remote>
             <ejb-class>a.b.c.CiviliteSession</ejb-class>
             <session-type>Stateless</session-type>
             <transaction-type>Container</transaction-type>
     
             <resource-ref >
                <res-ref-name>jdbc/steriagcv</res-ref-name>
                <res-type>javax.sql.DataSource</res-type>
                <res-auth>Application</res-auth>
             </resource-ref>
     
          </session>
    cela confirme-t-il tes dires ?

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    A priori oui:
    <transaction-type>Container</transaction-type>
    Le serveur d'application (container) va englober chaque appel de méthode de cet EJB dans une transaction.

    Je pensais qu'il y avait d'autres paramètres à renseigner dans ce fichier, comme par exemple, sur quelles méthodes de l'EJB appliquer les transactions.
    Si ça fonctionne comme ça, c'est que ça doit suffire.

  5. #5
    Membre habitué Avatar de le Daoud
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2002
    Messages : 287
    Points : 169
    Points
    169
    Par défaut
    Ca fonctionne bien comme cela, mais je ne vois pas l'intérêt de rajouter la couche service. En effet, l'ejb ne fait rien si ce n'est qu'appeler le service. Autour de moi on me suggère que cela a été fait avec l'idée qu'un service puisse être appelé par plusieurs EJBs... mais cela n'a jamais été utilisé dans l'appli, le service étant similaire à l'EJB (même méthodes, avec les mêmes noms)

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    L'idée est de séparer les couches pour pouvoir les réutiliser.
    Si tu décides de te passer des EJB, ce sera plus facile puisque ta couche de
    service ne contient pas de code faisant référence aux EJB.
    Elle est plus facile à utiliser dans d'autres contextes.

  7. #7
    Membre habitué Avatar de xv-mnt
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 142
    Points : 178
    Points
    178
    Par défaut
    Il me semble que c'est une implementation du patten business delegate au niveau de l'EJB.
    Comme l'a dit fort justement fr1man, on sépare le traitement "métier" dans une classe service du traitement transversal (sécurité, transaction) situé dans l'EJB. Dans ce cas c'est de manière déclarative dans l'ejb-jar.xml.
    Comme avantage, on peut tester unitairement le code métier en dehors d'un conteneur EJB, ce qui est plus facile à mettre en oeuvre .
    Tout le monde savait que c'était impossible à faire. Puis un jour quelqu'un est arrivé qui ne le savait pas, et il le fit (Winston Churchill)

  8. #8
    Membre habitué Avatar de le Daoud
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2002
    Messages : 287
    Points : 169
    Points
    169
    Par défaut
    Ok, merci bcp à vous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Architecture d'une APPLICATION WEB
    Par patrickg87 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 12/11/2014, 16h37
  2. Réponses: 6
    Dernier message: 03/12/2012, 17h18
  3. Réponses: 21
    Dernier message: 31/10/2012, 21h09
  4. Réponses: 0
    Dernier message: 03/06/2012, 18h59
  5. Architecture d'une Application 5250 ET Web
    Par SyrioDev dans le forum AS/400
    Réponses: 2
    Dernier message: 21/06/2009, 16h57

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