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 :

Specification du conteneur EJB


Sujet :

Java EE

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut Specification du conteneur EJB
    Salut à tous,

    Je me demandais pourquoi distingue t-on 2 conteneurs différents dans un serveur d'applications Java EE ?

    Ok pour le conteneur web qui contient les servlet et JSP.
    Ok j'ai saisie ce qu'était le conteneur EJB mais pourquoi le différencie t-on avec le conteneur web car les 2 sont des compléments qui tourne avec Java ?



    Merci pour votre éclairage.

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 117
    Points : 219
    Points
    219
    Par défaut
    Il y a des multiple raisons, mais les plus importante pour moi sont :
    - Pour une dissociation de code et des responsabilité (ça te force a séparer ta couche Model de tes couches Vue et Controlleur)

    - Pour les performances : imagine que ton site ai un franc succès, mais ton serveur commence a ne plus être capable de répondre aux requête dans un délai assez court : après avoir nettoyer au mieux le code, tu va prendre une autre machine sur laquelle tu ne va déployer que la partie EJB, et tu va configurer le premier serveur pour se connecter aux EJB du deuxième.

    Tu aura donc ici séparer les fonctionnalités en deux serveurs pour améliorer les performances. Ensuite chaque conteneur est généralement "clusterisable" ce qui te permet de déployer un ferme de 10 serveur (5 EJB, 5 JSP par exemple) tous relier entre eux et partageant leur informations. Ceci pour augmenter la sécurité (si un serveur tombe) et les performances (avec 5 serveur d'EJB tu sera capable de répondre à 5 fois plus de requêtes dans le même délai, en théorie )

    Mon petit blog sans prétention : http://blog.octera.info/

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut
    Salut OcterA

    Ok. C'est puissant en effet comme principe ca permet de faire des trucs de malade. Clustering sur chaque containers du serveur d'application c'est la grande classe

    Par contre d'après le schéma de ce lien :
    http://coursinformatique.dyalo.com/J...erviceWeb.html

    Il place les JavaBeans dans la parti conteneur WEB alors que wikipédia stipule qu'un JavaBeans = Beans = une des 3 catégories de EJB.

    Alors pourquoi placer des Beans dans le conteneur WEB et non dans le conteneur EJB prévu à cette effet ?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Les JavaBeans ne sont pas forcément des EJB, explications dans les cours et tutoriels java : http://java.developpez.com/cours/

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut
    Merci Mad-Math par contre j'ai quand même du mal à comprendre la différence entre des JavaBeans et des EJB car Wikipédia mentionne que :

    "Les EJB entité sont des beans ayant majoritairement pour vocation d'être persistants, c'est-à-dire pouvant être stockés sur un support physique entre deux sessions."

    Et comme un Beans et un JavaBeans c'est pareil , ref, cours et tutoriels java : http://java.developpez.com/cours/

    Alors qu'elle serait LA DIFFERENCE (et non la definition!) entre des EJB et des JavaBeans de facon clair, net, precise, limpide et clairvoyante ?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 68
    Points : 116
    Points
    116
    Par défaut
    Bonjour

    un bean pour faire simple c'est une classe qui respecte une certaine forme pour pouvoir être manipulable et utilisable par des frameworks, protocoles, librairies, logiciels etc

  7. #7
    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 166
    Points
    4 166
    Par défaut
    Un javabean est une classe java, qui doit répondre à certains critères.
    De mémoire, et cela mérite vérification il faut:
    - un constructeur public sans argument
    - implémenter sérializable
    - des getters et setters

  8. #8
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut
    Pour ma part après investiguation sur le net pour de vrai réponse détaillé et afin que cela puise servir au d'autres voici ce que j'ai pu condensé :
    "La technique Enterprise JavaBeans (EJB) est une architecture de composants logiciels côté serveur pour la plateforme de développement JEE.Cette architecture propose un cadre pour créer des composants distribués (c’est-à-dire déployés sur des serveurs distants) écrit en langage de programmation Java hébergés au sein d'un serveur applicatif permettant de représenter des données (EJB dit entité), de proposer des services avec ou sans conservation d'état entre les appels (EJB dit session), ou encore d'accomplir des tâches de manière asynchrone (EJB dit message). Tous les EJB peuvent évoluer dans un contexte transactionnel.
    De la version 1.0 à la version 2.1, un EJB était accompagné d'un ou plusieurs fichiers de déploiement écrit en XML qui permettait au serveur applicatif de déployer correctement l'objet au sein d'un conteneur. C'était notamment dans ces fichiers de déploiement que le développeur avait la possibilité de préciser le cadre transactionnel dans lequel l'objet allait s'exécuter. Depuis la version 3.0, le modèle EJB utilise le principe d'annotation java (meta-données) pour spécifier toute la configuration et les propriétés transactionnelles de l'objet. Le fichier de code source de l'EJB se suffit à lui-même.
    C'est le serveur applicatif qui a en charge la création, la destruction, la passivation ou l'activation de ses composants en fonction des besoins. Le client via un appel RMI (ou une de ses dérivées) va rechercher un EJB par son nom logique JNDI et appeler une/des méthodes de cet objet.
    Ce sont des composants inter-process (≠ JavaBeans qui sont intra-process) qui peuvent être executé sur des JVM différentes (≠JavaBeans qui a besoin d’être sur la même JVM). Ils ne possèdent pas de GUI.
    La différence essentiel entre les EJB et les JavaBeans réside dans le fait que le conteneur EJB du serveur d’applications fourni des services implicite aux EJB là ou les JavaBeans ne possède aucuns service et doivent être écrit entièrement par le programmeur. Les EJB sont accessibles indirectement par le client au travers de technologie diverses alors que les JavaBeans sont un processus interne pour les developpeur. JavaBeans n’est pas fait pour des architecture n-tiers alors que les EJB oui.
    "

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Tu n'as pas de rôle ou d'architecture d'associé à la notion de Bean (JavaBean). Ce sont des classes qui respectent + ou - les critères énoncés par fr1man. On s'en sert pour rassembler des données dans une même classe.


    Avec les EJB (Session, MDB, Entity) tu as une notion de rôle/architecture qui est associée.


    Les EJB Entity sont des JavaBeans qui s'insèrent dans le cadre d'une architecture particulière et qui ont pour rôle d'être persisté (En base de données ou autre).


    Exemple vite fait : tu veut créer un service de recherche de personne
    Tu va créer ton EJBEntity qui correspond a ton type Personne.

    Tu va créer ton EJBSession avec le service rechercherPersonne. Et au lieu d'avoir 150 paramètres à ta méthode rechercherPersonne(nom, prenom, ordreDeTri...), tu peux si tu le souhaites les regrouper dans un JavaBean CritereRecherche, que tu pourra éventuellement réutiliser dans d'autres services de recherche.

  10. #10
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut
    Merci mad-math pour la qualité de tes réponses.

    "Tu n'as pas de rôle ou d'architecture d'associé à la notion de Bean (JavaBean). Ce sont des classes qui respectent + ou - les critères énoncés par fr1man. On s'en sert pour rassembler des données dans une même classe.
    Avec les EJB (Session, MDB, Entity) tu as une notion de rôle/architecture qui est associée.
    Les EJB Entity sont des JavaBeans qui s'insèrent dans le cadre d'une architecture particulière et qui ont pour rôle d'être persisté (En base de données ou autre)."
    En fait ma difficulté de compréhension résidait dans le fait que les JavaBeans et les EJB se différencie non pas par leur nature mais par leur utilisation.

    Exemple vite fait : tu veut créer un service de recherche de personne
    Tu va créer ton EJBEntity qui correspond a ton type Personne.

    Tu va créer ton EJBSession avec le service rechercherPersonne. Et au lieu d'avoir 150 paramètres à ta méthode rechercherPersonne(nom, prenom, ordreDeTri...), tu peux si tu le souhaites les regrouper dans un JavaBean CritereRecherche, que tu pourra éventuellement réutiliser dans d'autres services de recherche.
    Ca commence effectivement à me parler un peu plus là.

    Dit moi peut-on considérer que les EJB Entity ont les mêmes propriétés que les Beans standard a savoir qu'il peuvent être :
    - propriété simple
    - propriété indexées
    - propriété liées
    - propriété liées avec contraintes ?

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Je n'ai pas compris ta question...

  12. #12
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut
    LOL je l'a refait

    Les EJB Entity sont considérés comme des Beans.
    Les beans possèdent certaines propriétés.
    Les JavaBeans sont des beans.
    Les EJB ne sont pas réellement des JavaBeans
    Alors
    Peut-on considéré que les EJB entity possèdent les même propriétés que les Beans standard à savoir qu'ils peuvent être de cette forme :
    - Beans à propriété simple
    - Beans à propriété indexées
    - Beans à propriété liées
    - Beans à propriété liées avec contraintes ?

  13. #13
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Je ne comprends pas tes histoires de propriétés simple, liées, contraintes...
    Citation Envoyé par fr1man Voir le message
    Un javabean est une classe java, qui doit répondre à certains critères.
    De mémoire, et cela mérite vérification il faut:
    - un constructeur public sans argument
    - implémenter sérializable
    - des getters et setters
    Cette explication me parait suffisamment simple pour expliquer ce qu'est un bean.

    Si tes EJB entity ont un constructeur sans argument, sérializable et avec des propriétés accessibles via getter/setter (Et c'est généralement le cas), tu peux le considérer comme un bean.

  14. #14
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut
    Dans ce lien tu trouvera une explication concernant les types de propriété dans les cours et tutoriels pour apprendre java : http://java.developpez.com/cours/

    Finalement tu fait la démarche inverse et tu te simplifie la vie. Et tu as bien raison."Si tes EJB entity ont un constructeur sans argument, sérializable et avec des propriétés accessibles via getter/setter tu peux le considérer comme un bean" donc les EJB auront forcement les propriétés qui vont avec

    On peut dire que on a fait tous le tour des EJB.

    Merci de votre aide et à la prochaine.

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

Discussions similaires

  1. [EJB3.1] Comment intégrer le conteneur d'EJB dans mon application web
    Par geforce dans le forum Java EE
    Réponses: 1
    Dernier message: 24/02/2013, 06h10
  2. [EJB] Conteneur EJB dans un serveur
    Par laoho dans le forum Java EE
    Réponses: 12
    Dernier message: 23/11/2012, 20h09
  3. [EJB] Client EJB Hors Conteneur [Swing] - NosuchMethod
    Par bza88 dans le forum Java EE
    Réponses: 1
    Dernier message: 19/01/2012, 10h02
  4. Réponses: 3
    Dernier message: 03/05/2009, 00h00
  5. [EJB2.1 Entity] comment configurer un conteneur EJb pour gérer la persistance des CMP
    Par berrehouma dans le forum Java EE
    Réponses: 1
    Dernier message: 06/04/2007, 11h08

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