Title: Introduction aux Entreprise Java Beans
1Introduction aux Entreprise Java Beans
2Problème
- Construire des applications pour entreprises
- Sures
- Sécurisées
- Supportant la montée en charge (scalable)
- Disponibles
- Favorisant la réutilisation
- Maintenables et extensibles
- Pour moins cher
3Moyen
- Utiliser une architecture distribuée
- Plusieurs tiers
- Les clients (front end)
- Les sources de données (back end)
- Un ou plusieurs tiers entre eux pour
- Implanter les nouveaux services
- Intégrer les différentes sources de données
- Masquer la complexité de lentreprise aux clients
4Architecture à composants distribués
- Permettent la construction dapplications
multi-tiers - Objectif
- Simplifier la création dapplication à base
dobjets distribués. - Promouvoir la programmation par composant pour le
coté serveur
5Composant logiciel
- Doit permettre la construction de logiciel par
composition - Exporte des propriétés et des méthodes
- Peut être configuré de façon externe
- Un composant peut être réutilisable à différent
degré - Composants connus
- COM/DCOM
- Java Beans
- Enterprise Java Beans
- Composants Corba
6Objet distribué (rmi)
7Middleware Explicite
transfer(Account account1, Account account2, long
amount) // 1 Call middleware API to perform a
security check // 2 Call middleware API to start
a transaction // 3 Call middleware API to load
rows from the database // 4 Subtract the balance
from one account, add to the other // 5 Call
middleware API to store rows In the database //
6 Call middleware API to end the transaction
8Middleware implicite
9Architecture multi-tiers
10Les solutions existantes
- Microsoft DNA (Distributed interNet Applications
Architecture) - Windows NT DCOM MSMQ (message queue) MTS
(transactions) Wolfpack (clustering) IIS (web
server) MMC (administration et déploiement) - Sun J2EE (spécification)
- OMG Corba (specification) et les composants Corba.
11J2EE
- Définit une architecture standard incluant
- Un modèle de programmation (application
multi-tiers, client légers) - Une plate-forme (ensemble de spécifications et de
politiques requises) - Un ensemble de test de compatibilité
- Une implantation de référence
12Architecture dune application J2EE
13La plateforme J2EE
- EJB définit la façon dont les composant doivent
être écrit et le contrat quils doivent respecter
avec le serveur dapplication - RMI communication inter procédés
- JNDI service de nommage
- JDBC connection vec les bases de données
- JTA service de transaction
- JMS service de messagerie
- JSP servlet et Java Server Page adapté à la
construction de composant réseau - Java IDL permet lintégration avec dautres
langages (en particulier à travers CORBA) - JavaMail
- Connectors intégration à des systèmes
dinformation existant - XML
14Les technologies
15Les Enterprise JavaBeans
- Spécification dune architecture permettant la
création dapplications distribuées - 2 versions
- 1.1 la plus courante
- 2.0 la plus récente
- Implantations de la spec
- BEA WebLogic, Jonas, Borland Appserver, IBM
Websphere, Jboss (open source) - Composant développé pour être exécuté sur un
serveur dEJB - Ne pas confondre avec un java bean
16Objectifs des EJB
- Fournir une plate-forme standard pour la
construction dapplications distribuées en Java - Simplifier lécriture de composants serveurs
- Portabilité
- Considérer le développement, le déploiement et
lexécution des applications
17Division des responsabilités
- Le fournisseur de bean
- Produit les composants métier
- Le fournisseur de conteneur EJB
- Fournit lenvironnement permettant lexécution
des beans - Le fournisseur de serveur EJB
- Fournit lenvironnement dexécution pour un ou
plusieurs conteneurs - Lassembleur dapplication
- Le déployeur (installateur)
- Ladministrateur
18Les Enterprise Beans
- Composants qui peuvent être déployés dans un
environnement multi-tiers et distribué. - Exposent une interface qui peut être appelé par
ses clients - Configurés de façon externe
- Linterface et limplantation du bean doivent
être conforme à la spécification EJB - Les clients peuvent être
- Un servlet
- Une applet
- Un autre bean
19Les types de Beans
- Session Beans contiennent la logique métier de
lapplication - 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
20Session 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ée - Peut être transactionnel
- Non recouvrable
- Peuvent être sans état ou conversationnel
(stateless ou stateful)
21Exemple de Session bean
- public class CartBean implements SessionBean
- String customerName
- Vector contents
- public void ejbCreate(String person) throws
CreateException - initialisation du bean
-
- // business method
- public void addBook(String title) // code
de la méthode - public void removeBook(String title) throws
BookException - public Vector getContents()
- // methodes appelées par le conteneur
- public void ejbRemove()
- public void ejbActivate()
- public void ejbPassivate()
- public void setSessionContext(SessionContext
sc) -
22Linterface
- Linterface décrit le contrat avec les clients
- public interface Cart extends EJBObject
-
- public void addBook(String title) throws
RemoteException - public void removeBook(String title) throws
BookException, RemoteException - public Vector getContents() throws
RemoteException -
23La factory
- Définit les méthodes permettant de créer, trouver
et détruire des objets EJB - public interface CartHome extends EJBHome
-
- Cart create(String person) throws
RemoteException, CreateException -
24Le descripteur de déploiement
- Fournit les informations nécessaires au
déploiement dans le conteneur et pour la
configuration des intercepteurs - ltenterprise-beansgt
- ltsessiongt
- ltdisplay-namegtCartEJBlt/display-namegt
- ltejb-namegtCartEJBlt/ejb-namegt
- lthomegtCartHomelt/homegt
- ltremotegtCartlt/remotegt
- ltejb-classgtCartBeanlt/ejb-classgt
- ltsession-typegtStatefullt/session-typegt
- lttransaction-typegtContainerlt/transaction
-typegt - ltsecurity-identitygt
- ltdescriptiongtlt/descriptiongt
- ltuse-caller-identitygtlt/use-caller-ident
itygt - lt/security-identitygt
- lt/sessiongt
- lt/enterprise-beansgt
25Déploiement (suite)
- ltassembly-descriptorgt
- ltmethod-permissiongt
- ltrole-namegtuserltrole-name/gt
- ltmethodgt
- ltejb-namegtCartEJBlt/ejb-namegt
- ltmethod-intfgtRemotelt/method-intfgt
- ltmethod-namegtgetContentslt/method-namegt
- ltmethod-params /gt
- lt/methodgt
- lt/method-permissiongt
- ltcontainer-transactiongt
- ltmethodgt
- ltejb-namegtCartEJBlt/ejb-namegt
- ltmethod-intfgtRemotelt/method-intfgt
- ltmethod-namegtgetContentslt/method-namegt
- ltmethod-params /gt
- lt/methodgt
- lttrans-attributegtRequiredlt/trans-attributegt
- lt/container-transactiongt
26Le client
- public class CartClient
- public static void main(String args)
- Context initial new InitialContext() //
context JNDI - CartHome home initial.lookup("javaco
mp/env/ejb/SimpleCart") - // Recherche de linterface de la factory
- // Creation de lobjet session
- Cart shoppingCart home.create("Duke
DeEarl xs) - // appel de quelques business méthodes
- shoppingCart.addBook("The Martian
Chronicles") - Vector bookList new Vector()
- bookList shoppingCart.getContents()
- shoppingCart.removeBook("Alice in
Wonderland") - // suppression de lobjet session
- shoppingCart.remove()
-
27Les entity beans
- Implantation dobjets métiers persistants
(client, compte,) - Persistance gérée par
- Les conteneurs (CMP)
- Le bean lui-même (BMP)
- Le conteneur gère également les transactions et
la sécurité pour le composant. - Utile pour gérer les accès concurrents à des
données persistantes.
28Exemple dentity bean (CMP)
- public class BookEJB implements
javax.ejb.EntityBean - public String author
- public String titlel
- public int price
- private EntityContext context
- public String getTitle() return title
- public String getAuthor() return author
- public int getPrice() return price
- public void setPrice(int _price)
- price_price
- public String ejbCreate (String _author,
String _title) throws CreateException - author_author
- title_title
- price0
- return null
-
-
- // Méthodes requises par le conteneur
- public void ejbPostCreate(String
_author,String _title) - public void ejbRemove()
- public void ejbLoad()
- public void ejbStore()
- public void setEntityContext(EntityContext
context) - this.context context
- public void unsetEntityContext()
- contextnull
-
- public void ejbActivate()
- public void ejbPassivate()
-
29Home interface
- public interface BookHome extends EJBHome
-
- public Book create(String id, String url) throws
RemoteException, CreateException - public Book findByPrimaryKey (String id) throws
RemoteException, FinderException - public Collection findAll() throws
RemoteException, FinderException - Public Collection findByAuthor(String author)
throws RemoteException, FinderException -
30Interface de lEntity Bean
- public interface Book extends EJBObject
- public String getAuthor() throws
RemoteException - public String getTitle() throws
RemoteException - public int getPrice() throws RemoteException
- public void setPrice(int mode) throws
RemoteException -
31Le descripteur de lentity bean
- ltentitygt
- ltdisplay-namegtBooklt/display-namegt
- ltejb-namegtBooklt/ejb-namegt
- lthomegtBookHomelt/homegt
- ltremotegtBooklt/remotegt
- ltejb-classgtBookEJBlt/ejb-classgt
- ltpersistence-typegtContainerlt/persis
tence-typegt - ltprim-key-classgtjava.lang.Stringlt/p
rim-key-classgt - ltreentrantgtFalselt/reentrantgt
- ltcmp-fieldgtltfield-namegttitlelt/field
-namegtlt/cmp-fieldgt - ltcmp-fieldgtltfield-namegtauthorlt/fiel
d-namegtlt/cmp-fieldgt - ltcmp-fieldgtltfield-namegtpricelt/field
-namegtlt/cmp-fieldgt - ltprimkey-fieldgttitlelt/primkey-fieldgt
- ltquerygt
- ltdescriptiongtlt/descriptiongt
- ltquery-methodgt
- ltmethod-namegtfindByAuthorlt/met
hod-namegt - ltmethod-paramsgtltmethod-paramgtjava.lang.Strin
glt/method-paramgtlt/method-paramsgt - lt/query-methodgt
32Configuration des transactions
- Attribut attaché à chaque description de bean
- Required
- RequiredNew
- Mandatory
- NotSupported
- Supports
- Never
33Message Driven Bean (ejb2.0)
- Intégration des EJB et de JMS
- Interactions asynchrones
- Utilisé pour réagir à des messages JMS
- Stateless bean
- Une seule méthode dans linterface
- onMessage()
34Exemple de message bean
- ltmessage-drivengt
- ltejb-namegtValueContainerListenerlt/ejb-namegt
- ltejb-classgthero.container.ValueContainerListene
rlt/ejb-classgt - ltmessage-selectorgtJMSType'ValueContainer
'lt/message-selectorgt - lttransaction-typegtContainerlt/transaction-
typegt - ltejb-refgt
- ltdescriptiongtValue Container
Homelt/descriptiongt - ltejb-ref-namegtejb/valuecontainerlt/ejb-ref-na
megt - ltejb-ref-typegtEntitylt/ejb-ref-typegt
- ltejb-linkgtValueContainerlt/ejb-linkgt
- lthomegthero.container.ValueContainerHomelt/hom
egt - ltremotegthero.container.ValueContainerlt/remot
egt - lt/ejb-refgt
- ltmessage-driven-destinationgt
- ltdestination-typegtjavax.jms.Topiclt/dest
ination-typegt - ltsubscription-durabilitygtNonDurablelt/
subscription-durabilitygt - lt/message-driven-destinationgt
- lt/message-drivengt
35EJB Object
36Utilisation dun EJB Object
37Paquetage dapplication
38Déploiement
- Création dun paquetage contenant
- Les classes des beans
- Le fichier de description
- Les fichiers de configuration spécifique au
serveur - Dautres librairies
- Mise en place dans le serveur (outils spécifique
ou déploiement à chaud)
39Intérêt des EJB
- Simplicité de lécriture des composants
- Mais le design est plus complexe
- Portabilité des composants
- A lexception des adaptations des serveurs
- Réutilisation/Composition
- Il faut quand même programmer
- Indépendance par rapport aux vendeurs
40Bénéfices dun serveur dEJB
- Gestion automatisée des stocks de ressources
- Gestion automatisée du cycles de vie des
composants - Gestion de la concurrence
- Scalabilité
- Fonctionnalités déclaratives
- Disponibilité et tolérance aux pannes
- Modèle dobjet distribué
41Limites actuelles (variables selon les serveurs)
- Maturité de la spécification, des technologies,
- Moins vrai depuis la version 2.0
- Performances ?
- Environnements de développement
- Complexité du design
- Expérience des développeurs
42Bibliographie et sources des schémas
- 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)
43Exemple dapplication J2EE