EJB. Karim Bouzoubaa Issam Kabbaj



Documents pareils
Compte Rendu d intégration d application

Plan. Department of Informatics

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Cedric Dumoulin (C) The Java EE 7 Tutorial

1. Installation d'un serveur d'application JBoss:

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Mise en œuvre des serveurs d application

Instructions Mozilla Thunderbird Page 1

JOnAS 5. Serveur d application d

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

EXA1415 : Annotations

WEB page builder and server for SCADA applications usable from a WEB navigator

Refonte front-office / back-office - Architecture & Conception -

VTP. LAN Switching and Wireless Chapitre 4

Création d une application JEE

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Exercices sur SQL server 2000

Auto-évaluation Aperçu de l architecture Java EE

OpenPaaS Le réseau social d'entreprise

Gestion des prestations Volontaire

Règlement sur le télémarketing et les centres d'appel. Call Centres Telemarketing Sales Regulation

DOCUMENTATION - FRANCAIS... 2

Application web de gestion de comptes en banques

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces

How to Login to Career Page

Cours en ligne Développement Java pour le web

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

DOCUMENTATION MODULE BLOCKCATEGORIESCUSTOM Module crée par Prestacrea - Version : 2.0

3615 SELFIE. HOW-TO / GUIDE D'UTILISATION

DOCUMENTATION - FRANCAIS... 2

Once the installation is complete, you can delete the temporary Zip files..

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

Contrôle d'accès Access control. Notice technique / Technical Manual

Java Enterprise Edition

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

et Active Directory Ajout, modification et suppression de comptes, extraction d adresses pour les listes de diffusion

La gestion de la persistance avec Hibernate. Hibernate et la gestion de persistance. La gestion de la persistance (1/2) Introduction

lundi 3 août 2009 Choose your language What is Document Connection for Mac? Communautés Numériques L informatique à la portée du Grand Public

Environnements de Développement

Lesson Plan Physical Descriptions. belle vieille grande petite grosse laide mignonne jolie. beau vieux grand petit gros laid mignon

Java pour le Web. Cours Java - F. Michel

Contents Windows

REMBO Version 2.0. Mathrice 2004 DESCRIPTION MISE EN OEUVRE CONCLUSION.

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

Le passé composé. C'est le passé! Tout ça c'est du passé! That's the past! All that's in the past!

4. SERVICES WEB REST 46

Java et les bases de données

Notice Technique / Technical Manual

Java Naming and Directory Interface

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Compléter le formulaire «Demande de participation» et l envoyer aux bureaux de SGC* à l adresse suivante :

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

10. Base de données et Web. OlivierCuré

TABLE DES MATIERES A OBJET PROCEDURE DE CONNEXION

HSCS 6.4 : mieux appréhender la gestion du stockage en environnement VMware et service de fichiers HNAS Laurent Bartoletti Product Marketing Manager

RULE 5 - SERVICE OF DOCUMENTS RÈGLE 5 SIGNIFICATION DE DOCUMENTS. Rule 5 / Règle 5

English Q&A #1 Braille Services Requirement PPTC Q1. Would you like our proposal to be shipped or do you prefer an electronic submission?

PRODUCTS LIST (updated 11th January 2010)

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

Formulaire d inscription (form also available in English) Mission commerciale en Floride. Coordonnées

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Exemple PLS avec SAS

What s New. Sun ONE Application Server. Version 7, Enterprise Edition

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

MELTING POTES, LA SECTION INTERNATIONALE DU BELLASSO (Association étudiante de lʼensaparis-belleville) PRESENTE :

SERVEUR DÉDIÉ DOCUMENTATION

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Les techniques de la télémaintenance

WDpStats Procédure d installation

JOnAS Day 5.1. Clustering

Tom Pertsekos. Sécurité applicative Web : gare aux fraudes et aux pirates!

Java Aspect Components (JAC)

COUNCIL OF THE EUROPEAN UNION. Brussels, 18 September 2008 (19.09) (OR. fr) 13156/08 LIMITE PI 53

Restaurant Application Quick Reference Guide

Accès aux bases de données

La rencontre du Big Data et du Cloud

Improving the breakdown of the Central Credit Register data by category of enterprises

Rapport de projet de fin d études

Practice Direction. Class Proceedings

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

XtremWeb-HEP Interconnecting jobs over DG. Virtualization over DG. Oleg Lodygensky Laboratoire de l Accélérateur Linéaire

Academic Project. B2- Web Development. Resit Project. Version 1.0 Last update: 24/05/2013 Use: Students Author: Samuel CUELLA

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

The new consumables catalogue from Medisoft is now updated. Please discover this full overview of all our consumables available to you.

Introduction à la plateforme J2EE

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad

Vanilla : Virtual Box

Motivations (many2many) Motivations (many2one) Sur le thème de la Version. La gestion de version. La gestion de configuration.

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

APPENDIX 6 BONUS RING FORMAT

Transcription:

EJB Karim Bouzoubaa Issam Kabbaj

Problématique html jsp Objets java jdbc table Pour accéder aux données : Établir une connexion avec la BD Envoyer une requête Traiter la requête Assurer l'intégrité Or : Nous voulons rester dans un monde Java Ne pas s'occuper de la connexion Na pas avoir à assurer l'intégrité 4/27/14 EJB 2

Diviser Objectif Chacun parle un langage Assurer les interfaces Architecture n-tiers Apache IIS Monde JAVA BEA Logic JBOSS client http html Serveur web Serveur Application BD jsp servlet EJB 4/27/14 EJB 3

Architecture JEE 4/27/14 EJB 4

Serveur web Objectif Avec le client : servlet-jsp/html Avec le serveur d'application : Java Serveur d'application Partie 2 Partie 1 Serveur web Offre de services Interface BD Serveur Application EJB BD 4/27/14 EJB 5

Objectif Partie 1 : ORM (Object Relational Mapping) Assurer la connexion et conversion Objets Java / Modèle relationnel BD Assurer l'intégrité et la persistance avec BD Sous traité à des librairies (JPA: TOPLink, Hibernate, EclipseLink, ) Partie 2 : Permet au client demandeur (1 jsp, 1 servlet, 1 prog java) d'effectuer des requêtes par des appels Java et à retourner comme résultat des objets Java 4/27/14 EJB 6

Exemple Serveur web Serveur Application Prog jsp: lister tous les pays Service 1: findallpays() Service 1 accès Table Pays findallpays() computeavg() Liste des Objets Pays Service 2 Service 3 Conversion en objets Java Table Pays 4/27/14 EJB 7

EJB Architecture permettant la création d'applications réparties Spécification d'une architecture permettant la création d'applications distribuées 2 versions 1.1 : la plus courante 3.0 : la plus récente Composant développé pour être exécuté sur un serveur d'ejb et appelé par un client distant Ne pas confondre avec un java bean qui est un composant côté client 4/27/14 EJB 8

Objectifs des EJB Rendre une application Facile à développer, à déployer et à administrer Indépendamment de la plate-forme permettant son exécution Un EJB n'est pas spécifique à la plateforme dans laquelle il est utilisé Fournir une plate-forme standard pour la construction d'applications distribuées en Java Simplifier l'écriture de composants serveurs Portabilité 4/27/14 EJB 9

Benefits of EJB Encapsulating business logic Business logic separated from control and presentation Remote access Multiple apps on different servers can access EJBs Simplicity Relatively easy to use compared to other remote-object systems Broad vendor support JBoss, Oracle AS, WebLogic, WebSphere, Glassfish, etc. Scalability Virtually all Java EE app servers support clustering, load balancing, and failover 4/27/14 EJB 10

Types de Bean Session Beans : contiennent la logique métier de l'application Etat (state): données relatives au client Stateful session bean Stateless session bean Entity Beans : contiennent la logique de gestion des données persistantes Message bean : contiennent la logique orientée message 4/27/14 EJB 11

Session Bean Fournit un service à un client Durée de vie limitée à celle du client Effectue des calculs ou des accès à une base de données Est non persistant (short-lived) Associé à un seul client Un flot d'exécution est créé pour chaque appel de méthode stateless sessions bean (sans état) pas de donnée interne, inutile de le rendre passif, peut être partagé par plusieurs clients plusieurs appels de méthodes en provenance du même client Stateful sessions bean (avec état) Détruit après un arrêt (ou une panne) du serveur EJB 4/27/14 EJB 12

Session à Stateless Stateless (sans état) à les attributs de l EJB sont réinitialisées entre chaque appel même s il s agit du même client Sont spécialement pensés pour être robustes et fiables lorsqu il y a beaucoup d appels en concurrence Lorsqu un client appelle l EJB, une instance de ce dernier sert le client, puis, retourne dans le pool d EJB (cette dernière est donc prête à être réutilisée pour un autre client) A utiliser le plus souvent possible (par rapport aux Stateful) à cycle de vie 4/27/14 EJB 13

Session beans Stateless session beans On server, you make interface (marked with @Remote) and POJO that implements it (marked with @Stateless) Ordinary Java object with ordinary methods that use ordinary Java objects as arguments and return types No state (instance vars) maintained between method calls Client uses InitialContext.lookup("name") to get ref. Client makes normal method calls (data serialized on net.) Stateful session beans Mark POJO with @Stateful instead of @Stateless Mark special method with @Remove Client does similar lookup and method calls, but needs to call the special method when done. State (instance vars) maintained until that method called 4/27/14 EJB 14

Stateless Session Beans : Approach Define an interface Mark with @Remote For access from other servers or from projects on same server Mark with @Local To only allow access from projects on same server (default) Create a class that implements interface Mark with @Stateless for server s default JNDI mapping Mark with @Stateless(mappedName="SomeJndiName») (Java Naming and Directory Interface) 4/27/14 EJB 15

Interface Means that you can use InitialContext to access from either same server or remote machine. Remote client will pass in normal arguments and get normal return values. Behind the scenes, however, data will be serialized and sent across network. 4/27/14 EJB 16

Class that Implements Interface If you just use @Stateless, remote clients need to use serverspecific JNDI name. If you are using Glassfish only (or JBoss only), this is fine. But if you want to deploy the same app to multiple servers and not change the client code at all, it simplifies things to use a common JNDI name via @Stateless(mappedName="JNDI- Name") 4/27/14 EJB 17

Remote Standalone (Desktop) Client mappedname given in @Stateless annotation Used like normal object. Behind the scenes, however, arguments and return value are sent across network. 4/27/14 EJB 18

Remote Client : jndi.properties Notes Created text file called jndi.properties in src folder Change this hostname if app server is on different host than client. For Glassfish org.omg.corba.orbinitialhost=localhost Output Small lucky number:4,46 Medium lucky number:20,03 Big lucky number: 431,26 4/27/14 EJB 19

Client Clients must also define (have a copy - share) the interface Clients find the bean via JNDI Client Java code doesn t even know the machine on which the bean resides Clients use the bean like a normal POJO But arguments and return values are sent across network So, custom classes should be Serializable Core client code InitialContext context = new InitialContext(); InterfaceName bean = (InterfaceName)context.lookup("JNDI-Name"); NumberService bean = (NumberService)context.lookup("NumberServiceJNDIName"); NumberService bean = (NumberServiceImplementation)context.lookup("NumberServiceJNDIName"); 4/27/14 EJB 20

Deploying Does not need to run on same machine as EJB Project. Standalone (desktop) clients don t need to be deployed to any app server; they can just have a main method. Web apps should be deployed to a Java EE 5 app server 4/27/14 EJB 21

Remote Web Client (Servlet) 4/27/14 EJB 22

Output 4/27/14 EJB 23

DEMO

Using @EJB to Access Local Beans Use @EJB before instance variable Bean will be automatically instantiated and assigned. Eg: @EJB private SomeService myservice; Useful for One EJB that uses another EJB as part of its logic Always good idea since EJBs are usually together Multiple Web apps that use the same business logic Simpler, but Web app can t move to remote server Restrictions Before instance variables, not local variables. Both classes must be part of same EAR on same server In Eclipse, all classes in a single EJB project satisfy this If you use an EJB project (EJBs) and Dynamic Web projects (classes that use the EJBs), you must choose «Add project to an EAR» and specify same one. 4/27/14 EJB 25

EJB Interface 4/27/14 EJB 26

EJB Class that Implements Interface Declare the interface type (NumberService), not the concrete type (NumberServiceImplementation). 4/27/14 EJB 27

Remote Client (Servlet) Looks up remote EJB the normal way. That remote EJB uses @EJB to access a local bean. If this Web app were always part of the same EAR on the same app server, then this Web app could also use @EJB to access beans. But having the Web app use InitialContext is more flexible because it allows for the possibility of the Web app later moving to another server without changing any code. 4/27/14 EJB 28

Output 4/27/14 EJB 29

EXERCISE WITH DESKTOP APPLICATION

Session à Stateful Stateful (avec état) => les attributs de l EJB sont sauvegardés durant toute la session Lorsqu un client appelle l EJB, une instance de ce dernier est créée, puis sert le client. Cette instance reste disponible pour les futurs appels de ce client uniquement. Cette instance sera détruite à la fin de la session (timeout ou appel à une méthode portant l annotation @Remove) S il y a trop d instances d un EJB en mémoire, ces dernières peuvent être sorties de la mémoire de travail. Elles passent ainsi en mode passif (= sauvées sur disque => tous les attributs doivent être sérialisables = types implémentant l interface Serializable) 4/27/14 EJB 31

Stateful Session Beans : Approach Define an interface Mark with @Remote For access from other servers or from projects on same server Mark with @Local To only allow access from projects on same server (default) Create a class that implements interface Mark with @Stateful for server s default JNDI mapping Mark with @Stateful(mappedName="SomeJndiName") Mark a method with @Remove When called, server terminates session and gc s instance 4/27/14 EJB 32

EJB Interface 4/27/14 EJB 33

EJB Class that Implements Interface Remote client will do Context.lookup("coolnumber-list") and cast it to FancyList Client will call this method first to set up the state of the bean. Then the client will repeatedly access the getblah methods to access information related to the state. When done, the client will call removelist When client calls this method, session is broken and bean instance is eligible for garbage collection 4/27/14 EJB 34

Remote Client (Servlet) Sets up state that will be used in the JSP page JSP page (MVC approach) uses state of the EJB Tells remote app server we are done with stateful EJB 4/27/14 EJB 35

Remote Client (JSP) 4/27/14 EJB 36

Remote Client (Input Form) 4/27/14 EJB 37

Remote Client : Results 4/27/14 EJB 38

Développer des sessions Beans Stateful vs Stateless Utiliser un bean session avec état (stateful) si : Le bean enregistre des données d un seul client particulier(comme une session d un navigateur Web) Le bean enregistre des données pendant la durée d appel de plusieurs invocations de méthodes L état du Bean représente l état de l interaction entre le client et le Bean Le Bean doit conserver de l information entre deux invocations du client Dédié à un client pendant toute sa dur de vie Le même Bean est utilisé pour servir tous les appels du même client 4/27/14 EJB 39

Développer des sessions Beans Utiliser un bean session sans état (stateless) si : Le bean n enregistre pas des données d un seul client le bean existe pour un appel de méthode unique le bean est utilisée pour extraire des données d'une base de données Pour des tâches génériques Pour consulter en lecture seule des données persistantes Efficaces et faciles à implémenter Les données sont passées comme paramètres de la méthode 4/27/14 EJB 40

Summary Stateless session beans Interface: mark with @Remote Class: mark with @Stateless(mappedName="blah") Stateful session beans Mark class with @Stateful instead of @Stateless Mark a method with @Remove Session bean clients InitialContext context = new InitialContext(); InterfaceType var = (InterfaceType)context.lookup("blah"); var.somemethod(args); For stateful beans, call specially marked method when done Need jndi.properties specific to server type Local access to beans @EJB private InterfaceType var; 4/27/14 EJB 41

Entity Bean Ce sont des objets qui savent se mapper avec une base de données Ils servent à représenter sous forme d'objets des données situées dans une base de données Le plus souvent un objet = une ou plusieurs ligne(s) dans une ou plusieurs table(s) Accepte les accès multiples effectués par plusieurs clients Utile pour gérer les accès concurrents à des données persistantes 4/27/14 EJB 42

Persistance par mapping objet/bd relationelle 4/27/14 EJB 43

Entity Bean C est une classe java «normale» (POJO) avec des attributs, des accesseurs, des modifieurs, etc. On utilisera les annotations (méta-données) ou «attributs de code» pour indiquer le mapping, la clé primaire, etc. Clé primaire = un objet sérializable, unique pour chaque instance. C'est la clé primaire au sens SQL On manipulera les données de la BD à l aide des EntityBeans + à l aide d un PERSISTENT MANAGER (PM) Le PM s occupe de tous les accès disque, du cache, etc. Lui seul contrôle quand et comment on va accéder à la BD, c est lui qui génère le SQL, etc. 4/27/14 EJB 44

Annotation @Entity L annotation @Entity définit le bean comme étant de type entité Le bean doit posséder au moins un constructeur par défaut et devra hériter de l interface Serializable afin d être utilisable à travers le réseau pour la gestion de la persistance On peut spécifier deux méthodes différentes pour la gestion de la persistance au moyen de l option access : @Entity(access=AccessType.FIELD) permet d accéder directement aux champs à rendre persistant @Entity(access=AccessType.PROPERTY) oblige le fournisseur à utiliser les accesseurs 4/27/14 EJB 45

Clé primaire La clé primaire peut-être simple ou composée et doit être déclarée avec l annotation @Id Par exemple, pour obtenir une clé qui s incrémente automatiquement : @Id @GeneratedValue(strategy = GenerationType.AUTO or GenerationType.IDENTITY) Pour les clés composées, il faut respecter certains principes : La classe de la clé primaire doit être public et posséder un constructeur sans arguments. Si l accès est de type PROPERTY, la classe peut-être soit de type public soit de type protected. La classe doit être sérialisable (implémenter Serializable). Implémentation des méthodes equals() et hashcode(). Si la clé primaire est mappée à de multiples champs ou propriétés, les noms des champs de cette clé doivent être les mêmes que ceux utilisés dans le bean entité. Les annotations permettent d effectuer le mapping objet/relationnel et la gestion des relations entre les entités 4/27/14 EJB 46

Class Entity La classe = POJO, Sérializable, Un attribut = la clé primaire C est tout! 4/27/14 EJB 47

Fichier persistence.xml 4/27/14 EJB 48

Class Stateless Session Ce session bean est stateless, Utilise un EntityManager, Sert à envoyer des requêtes JPQL, Méthode persist(entity) pour créer une nouvelle entrée (insert) Le reste passe par des appels de méthodes classiques de l entity bean. 4/27/14 EJB 49

Class Stateless Session 4/27/14 EJB 50

Client 4/27/14 EJB 51

Client 4/27/14 EJB 52

Main 4/27/14 EJB 53

Annotations utilisés Lors de la création d un bean entité, il faut effectuer le mapping de tous ses champs. @Table définit la table correspondant à la classe, elle prend en argumant le nom de la table. @Entity(access=accessType.FIELD) @Table(name="PAYS") public class Pays implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; @Basic private String nom; Un mapping par défaut intervient lorsqu aucune annotation précède le champ : @Basic spécifie ce comportement. } public Pays() { } public Pays(String nom) { this.nom = nom; } public int getid() { return id; } 4/27/14 EJB 54

Annotations utilisés On peut faire correspondre une valeur à un champ spécifique de la base de données en utilisant l annotation @Column et des options comme name qui spécifie le nom de la colonne, ou des options pour définir si champ peut être nul, @Column(name="DESC", unique=true, nullable=false, length=32) public String getdescription() { } return description; Il existe les relations OneToOne, OneToMany, ManyToOne, ManyToMany (définies par les annotations correspondantes). Dans ces cas, il ne faut pas oublier de spécifier les colonnes faisant les jointures. @ManyToOne(optional=false) @JointColumn(name = "CLIENT_ID", nullable = false, updatable = false) public Client getclient (){ } return client; @JoinTable(name = "Mat_Prof", joincolumns = { @JoinColumn(name = "id_prof", referencedcolumnname = "id_prof")}, inversejoincolumns = { @JoinColumn(name = "id_mat", referencedcolumnname = "id_mat")}) @ManyToMany private Collection<Matieres> matierescollection; 4/27/14 EJB 55

EntityManager Les beans entités se manipulent par l intermédiaire d un EntityManager. Cet EntityManager peut être obtenu à partir d un Bean Session par injection de dépendance. @Stateless public class EmployeeManager{ } @PersistenceContext(unitName = "EmploiePU") EntityManager em; public void updateemployeeaddress (int employeeid, Address address) { } //Recherche d un bean Employee emp = (Employee) em.find("employee", employeid); emp.setaddress (address); 4/27/14 EJB 56

Create an Entity Bean Class This interface is used for interacting with the persistence context. This interface is essential for database access and control, as it defines several methods for working with entity instances. 4/27/14 EJB 57

Create an Entity Bean Class The Interface Methods The EntityManager interface defines several methods that you can use to work with entity instances. Some of the vital methods that you need to be aware of are the database management methods. Method find() remove() persist() Description Searches a table based on the primary key for a particular record. Removes the instance of an entity. Makes the instance of an entity managed and persistent. 4/27/14 EJB 58

Modèle global 4/27/14 EJB 59

Exemple avec Produit Projet complet BD (table produit) EJB-Model entite ejb session ejb Servlet-Control Jsp-View 4/27/14 EJB 60

Exemple avec Produit 4/27/14 EJB 61

Exemple avec Produit 4/27/14 EJB 62

Exemple avec Produit 4/27/14 EJB 63

Exemple avec Produit 4/27/14 EJB 64

Exemple avec Produit 4/27/14 EJB 65

Exemple avec Produit 4/27/14 EJB 66

Exemple avec Produit 4/27/14 EJB 67

Liens utiles http://netbeans.org/kb/docs/javaee/ecommerce/entity-session.html J2EE Specification Java.sun.com/products/j2ee Enterprise Java Beans Specification 1.1 et 2.0 Java.sun.com/products/ejb Mastering Enterprise JavaBeans and the Java 2 Platform Enterprise Edition Ed Roman Wiley Computer publishing 1999 www.theserverside.com java.sun.com/j2ee/tutorial www.jboss.org (serveur Open Source) Support de cours de Didier Donsez (université de Valenciennes) J2EE blueprints (java.sun.com) Mastering Enterprise JavaBeans II Ed Roman - (www.theserverside.com) 4/27/14 EJB 68