le standard ejb3 par la pratique l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Le Standard EJB3 par la pratique PowerPoint Presentation
Download Presentation
Le Standard EJB3 par la pratique

Loading in 2 Seconds...

play fullscreen
1 / 49

Le Standard EJB3 par la pratique - PowerPoint PPT Presentation


  • 381 Views
  • Uploaded on

Le Standard EJB3 par la pratique. Réalisé par : MEDINI Soumaya MEJRI Nassiha 2005-2006. Plan général. Introduction Historique Complexités de EJB2 Les apports de EJB3 Demo Conclusion. INTRODUCTION (1).

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Le Standard EJB3 par la pratique' - debbie


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
le standard ejb3 par la pratique

Le Standard EJB3 par la pratique

Réalisé par: MEDINI Soumaya

MEJRI Nassiha

2005-2006

plan g n ral
Plan général
  • Introduction
  • Historique
  • Complexités de EJB2
  • Les apports de EJB3
  • Demo
  • Conclusion

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

introduction 1
INTRODUCTION (1)
  • Evolution importante concernant le modèle de composant JEE : les EJB2 deviennent les EJB3.
  • Nouveau JEE

- Thèmes : Simplification de développement

- Intégration JSF 1.2 (JSR 252) Java Specification Request

- EJB 3.0 (JSR 220 )

  • JSR220-ORM apporte l'ensemble des outils nécessaires à la persistance Java
  • EJB3 nécessite un JDK 1.5.0

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

introduction 2
INTRODUCTION (2)
  • Critique des Enterprise JavaBeans (EJB) par plusieurs developpeurs à cause de ses complexités.
  • Gavin King, leader du Framework Hibernate et membre du groupe d'experts EJB 3 a dévoilé le premier brouillon de cette spécification EJB3
  • Cette nouvelle version des EJB apporte des modifications notables dans le domaine du modèle de développement et intègre de nombreuses nouveautés notamment en ce qui concerne les EJBs entity tellement décrites dans les versions 2.X.

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

historique
Historique
  • Mars 1998 : EJB 1.0
  • Novembre 1999 : EJB 1.1

- sécurité, entity beans,…

  • Août 2001 : EJB 2.0

- Local interfaces, relationships, EJB-QL, MDBs…

  • Novembre 2003 : EJB 2.1

- EJB-QL (order by, avg, max, min, sum, count, EJB Timer service…)

  • Février 2005 : EJB 3.0

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

slide6
Quelles sont les complexités des EJB2.X?

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

les complexit s de ejb 2 x 1
Les complexités de EJB 2.x (1)
  • EJBs sont contre-productifs

- 1 bean a des dépendences avec EJBLocalObject, EJBLocalHome, EJBHome, EJBObject, ejb-jar.xml …

- Les outils pour masquer la complexité ne sont pas forcément à la hauteur

-Difficile à tester !

  • Necessité d’avoir une connaissance détaillée à propos du JNDI pour réussir une application EJB.

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

les complexit s de ejb 2 x 2
Les complexités de EJB 2.x (2)
  • Les EJB components ne sont pas totalement orientés objet (pb pour l’heritage et le polymorphisme)

→ les classes persistantes doivent hériter de certaines classes fournies par le framework

  • Entity Beans

- EJB-QL est à la rescousse: en pratique, trop limité et statique

-JDO, iBatis, Hibernate sont plus simples et plus appropriés

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

les complexit s de ejb 2 x 3
Les complexités de EJB 2.x (3)
  • verbose : beaucoup de fichiers à écrire
  • Compléxité des descripteurs de déploiement (EJB).
  • Difficulté d’utiliser les classes persistantes en dehors du container en particulier pour les tests
  • Le framework ne peut pas prendre en charge la persistance d’objets des classes Java ordinaire (POJO)

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

les complexit s de ejb 2 x 4
Les complexités de EJB 2.x (4)
  • Certains containers nécessitent une génération de stubs (JOnAS,..)
  • D'autres génèrent les proxys automatiquement (JBoss, Geronimo…)
  • Des containers génèrent des finders automatiquement (JBoss)
  • Le développement multi-container est « complexe »
  • Mais ne pas en tenir compte est aussi un risque

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

les complexit s de ejb 2 x 5
Les complexités de EJB 2.x (5)

Donc:

EJB 2.1 aujourd 'hui puissant, mais complexe à utiliser!

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

slide12
Quels sont les apports de EJB3?

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

apports d ejb3 1
Apports d’EJB3  (1)
  • Simplifier le développement pour palier à un modèle de programmation complexe menant à un certain nombre d'anti-patterns (utilisation de DTO, Entity Beans, ...).
  • Simplifier l’architecture des EJBs en réduisant sa complexité de point de vue développeur
  • Génération automatique d'interface possible

• Pas de JNDI pour le développeur ou le client

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

apports de ejb3 2
Apports de EJB3 (2)
  • Simplification des composants par l'utilisation des POJOs / JavaBeans
  • Elimination des interfaces EJBObject, EJBLocalObject, Remote, Home, …
  • Simplification des CMPs
  • Extension de EJBQL : jointures, subqueries, dynamic queries, native SQLqueries, …

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

apports de ejb3 3
Apports de EJB3 (3)
  • Améliorer la testabilité hors du container
  • Utilisation des metadata pour simplifier la maintenance des composants
  • Simple annotations:
    • Utilisation systématique des annotations pour simplifier la programmation.
    • Elimination de descripteur de deploiement
    • Génération des interfaces dont on a besoin

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

apports de ejb3 4
Apports de EJB3 (4)

Descripteur Déploiement EJB 2.1

<session>

<ejb-name>ShopCartBean</ejb-name>

<local-home>ShopCartHome</local-home>

<local>ShopCart</local>

<ejb-class>com.example.ShopCartBean</ejb-class>

<session-type>Stateful</session-type>

<transaction-type>Container</transaction-type>

<resource-ref>

<res-ref-name>jdbc/myDB</res-ref-name>

<res-ref-type>javax.sql.DataSource</res-ref-type>

<res-auth>Container</res-auth>

</resource-ref>

</session>

...

<assembly-descriptor>

...

</assembly-descriptor>

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

apports de ejb3 5
Apports de EJB3 (5)
  • Pour EJB3 :

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

compatibilit et migration
Compatibilité et migration
  • Une application EJB 2.1 doit fonctionner inchangée dans un conteneur EJB 3.0
  • Migration vers EJB 3.0

- Client EJB 3.0 & Composant EJB 2.1

- Client EJB 2.1 & Composant EJB 3.0

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

apports de ejb3 6
Apports de EJB3 (6)

EJB 3 définit un standard de persistance qui ne cible que le relationnel à l’exclusion des autres formes de données (XML, mainframe) et qui ne peut s’exécuter que dans le contexte d’un container (à l’exclusion des applications Swing, JSP ou batch par exemple).

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

apports d ejb3 7
Apports d’EJB3 (7)

•Conclusion:

EJB3.0 = Simplification des Développements avec Compatibilité et Migration

EJB3.0 = EJB2.X + XDoclet

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 pojo 1
EJB3: POJO (1)
  • POJO:Plain Old Java Objects (bons vieux objets Java tous simples)
  • Utiliser un modèle objet simple (facile à développer, centré sur l'applicatif plus que sur le technique) et sans dépendances avec telle API ou tel framework.
  • Dans le monde Java, le modèle EJB3 ou les deux frameworks de persistance Hibernate et TOPlink sont les trois solutions les plus utilisées pour assurer la persistance des concepts métier implémentés sous forme de POJO

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 pojo 2
EJB3: POJO (2)

EntityManager:

  • EntityManager est un point de contrôle (“home”) pour les opérations sur les EJB entité

1- Méthodes de cycle de vie:

-Persist, remove, merge, flush, refresh, etc

2- Méthodes de requêtage pré-définies (find)

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 pojo 4
EJB3: POJO(4)

3- Factory pour des objets Query

- Requêtes (nommées) statiques et dynamiques

- Requêtes EJB-QL et SQL

4- Gestion du contexte de persistance

- Réunion des identités persistantes

- Contexte étendu de persistance (transactions multiples)

5- Concept similaire à celui de Hibernate Session, JDO PersistenceManager,..

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 pojo 3
EJB3: POJO (3)

Cycle de vie

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

pojo cycle de vie
POJO: cycle de vie
  • New

- Pas d 'identité de persistance

- Pas associé au conteneur

  • Managed

- Identité de persistance

- Géré par le conteneur

- Synchronisation SGBDR

- Gestion des relations

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

pojo cycle de vie26
POJO: cycle de vie
  • Detached

- Identité de persistance

- Non géré par le conteneur

- Necessité de la synchronisation

  • Removed
  • Identity de persistance
  • Suppression du bean

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

annotations 1
Annotations (1)
  • Introduites dans JDK1.5 (JSR 175), alternatives à XDoclet
  • Rendent les descripteurs de déploiement facultatifs
  • Moins de verbosité pour les cas simples
  • Meta-données proche du code
  • gestion de source simplifiée
  • Alléger le code

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

annotations 2
Annotations(2)

Annotations EJB 3.0

1- Nature de l'EJB

- @Stateless, @Stateful, @MessageDriven ou @Entity

2- Accès distant ou local

- @Remote, @Local

- Plus de RemoteException

3- Cycle de vie

- @PostConstruct, @PostActivate, @Remove, @PreDestroy, @PrePassivate

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

annotations 3
Annotations(3)
  • @Entity indique que le User class est un bean entité.
  • @EJBconfigure la valeur EJB pour chaque méthode
  • @Id annotation indique l’attribut de la clé primaire du bean entité
  • @Tablespécifie la table de base de données pour les bean entité

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

annotations 4
Annotations (4)
  • @SecondaryTablespécifie la table secondaire
  • @Serializedspecifie que la propriété persistante doit être serializable
  • @JoinColumnspécifie la colonne de jointure avec la colonne secondaire
  • @OneToMany Specifie le champ comme une relation1-n

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

injection
INJECTION
  • Le composant déclare ce dont il a besoin au travers de meta-données
  • Le conteneur fournit au composant ce qu'il réclame

- Les ressources et services nécessaires à un composant sont « injectées » à la création de chaque instance de composant

Transactions

Notifications de cycle de vie

Mécanisme de persistance

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

les annotations d injection
Les annotations d’injection
  • @EJB

- Annote les interfaces métier des EJB

- Annote les interfaces Home

  • @Inject ou @PersistenceContext

- Permet l 'injection de tout ce qui se trouve dans JNDI

- Permet d 'injecter SessionContext, UserTransaction, EntityManager, ...

  • @Resource

- Annote toute le reste (ou presque)

- Injection de variable d 'instance ou de setter

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

annotations vs descripteur d ploiement
Annotations vs. Descripteur Déploiement
  • Le descripteur de déploiement reste pertinent

- Pour un développeur ou l 'entreprise qui a ses habitudes

- Pour externaliser des meta-informations

- Pour redéfinir des annotations

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 bean session 1
EJB3: Bean Session(1)
  • Spécification par @Stateful ou @Stateless
  • stateful session beans sont transitoires
  • @Remove: spécifier au conteneur que le stateful session bean instance peut être supprimé

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 bean session 2
EJB3: Bean Session(2)

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 bean session 236
EJB3: Bean Session(2)

Pour indiquer que cette classe est un stateless session bean

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 bean session 237
EJB3: Bean Session(2)

injection de tout ce qui se trouve dans JNDI

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 entity bean 1
EJB3: Entity Bean(1)
  • Un EJB entité devient une simple classe Java

1- Classe concrète

2- Héritage et polymorphisme

3- Méthodes getXX/setXX pour les propriétés persistantes

4- Pas d 'interface à implémenter

5- Pas de méthode de callback requise

  • Specifié par l’annotation @Entity

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 entity bean 2
EJB3: Entity Bean(2)
  • Entity bean représente les données persistantes de la base de données
  • Entity beans sont aussi partagés par plusieurs clients
  • Utilisable comme objet « détaché » dans d'autres parties de l'application:

1- Plus besoin de Data Transfer Object (DTO)

2- Doit implémenter Serializable

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 entity bean 3
EJB3: Entity Bean(3)

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 entity bean 341
EJB3: Entity Bean(3)

Spécifie la table de la base pour l’entité bean

Spécifie le champ comme une relation n-1

Définit la clé étrangère

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 bean message
EJB3: Bean Message

Message-Driven Beans:

  • Les beans messages (MDB) offrent une méthode simple pour implémenter une communication asynchrone.
  • MDBs sont crées pour recevoir des messages JMS asynchrones.
  • javax.jms.MessageListener interface
  • Annotation: @MessageDriven.

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 persistance 1
EJB3: persistance (1)
  • La persistance : ce terme est utilisé pour indiquer le fait qu'un objet peut être sauvegardé de façon plus ou moins automatisée
  • Le groupe EJB 3 a décidé de proposer une nouvelle technologie de persistance, totalement en opposition avec les choix précédents et en partie basée sur les concepts de JDO

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 persistance 2
EJB3: persistance (2)
  • La notion de persistance
  • Simple et incomplète avant EJB 3.0
  • Nécessite de trouver le lien entre approche object et relationnel
  • EJB 3.0 propose au développeur d'établir simplement un mapping entre domaine métier (objet) et base de données relationnelle

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 persistance 3
EJB3: persistance (3)

4. Le développeur a conscience de l'existence de ce mapping entre schéma SGBDR et modèle objet

- Dans la manipulation des requêtes

- Dans l 'utilisation des annotations dédiées au mapping O/R

- Dans les règles de configuration par défaut

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

ejb3 persistance 4
EJB3: persistance (4)

Objets persistants:

  • Objets à vie courte contenant l'état de persistance et la fonction métier.
  • Ils sont en général les objets de type JavaBean (ou POJOs)
  • La seule particularité est qu'ils sont associés avec une (et une seule) Session.

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

slide47
DEMO. . .

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

conclusion
Conclusion
  • EJB 3.0 – Simplification drastique pour le développeur

1- Suppression de classes et d 'interfaces

2- Modèle d 'injection de services et de ressources

3- Descripteurs de déploiement rendus facultatifs

4- EJB entité POJO

5- Capacités de requêtage améliorées

6- Spécification du mapping O/R

  • EJB 3.0 constitue les fondations de JavaEE 5.0 pour le développeur

Réalisé par: MEDINI Soumaya et MEJRI Nassiha

slide49
Merci pour votre attention. . .

Réalisé par: MEDINI Soumaya et MEJRI Nassiha