45
Chapitre 3 : Architectures distribuées Entreprise Java Beans (EJB)

Entreprise Java Beans (EJB) - BENELALLAM

  • Upload
    others

  • View
    7

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Entreprise Java Beans (EJB) - BENELALLAM

Chapitre 3: Architectures distribuéesEntrepriseJavaBeans (EJB)

Page 2: Entreprise Java Beans (EJB) - BENELALLAM

Limitationsdesarchitecturesn-tierssimple

• leserveurd’applicationconstituelapierreangulairedel'architectureetsetrouvesouventfortementsollicitéetilestdifficilederépartirlachargeentreclientsetserveur.

• Onseretrouveconfrontéauxépineuxproblèmesdedimensionnementserveuretdegestiondelamontéeenchargerappelantl'époquedesmainframes.

• Deplus,lessolutionsmisesenœuvresontrelativementcomplexesàmainteniretlaréutilisationdescomposantsestcompliquée.

Page 3: Entreprise Java Beans (EJB) - BENELALLAM

Verslesarchitecturesdistribuées

Page 4: Entreprise Java Beans (EJB) - BENELALLAM

Entreprise Java Beans

Page 5: Entreprise Java Beans (EJB) - BENELALLAM

ArchitecturedesEJB

Enterprise JavaBeans (EJB) est une architecture de composants logiciels côté serveur pour la plateforme de développement Java EE.Cette architecture propose un cadre pour créer des composants distribués (c’est-à-dire déployés sur des serveurs distants).

Page 6: Entreprise Java Beans (EJB) - BENELALLAM

ArchitecturedesEJB

Les EJB sont écrits en Java et 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.

Page 7: Entreprise Java Beans (EJB) - BENELALLAM

LesversionsdesEJB

• Stateful sessionetStatelesssession

• Interfaces:HomeRemote

Page 8: Entreprise Java Beans (EJB) - BENELALLAM

LesversionsdesEJB

• BeanEntitéet• ledescripteurde

déploiementXML

Page 9: Entreprise Java Beans (EJB) - BENELALLAM

LesversionsdesEJB

• Localeinterfaceet

• miseenchargedesrequêtesSQL

Page 10: Entreprise Java Beans (EJB) - BENELALLAM

LesversionsdesEJB

• Priseenchargedesservicesweb,

• SOAPandHTTP.

Page 11: Entreprise Java Beans (EJB) - BENELALLAM

LesversionsdesEJB

• Unfocussurleease ofuse,

• RemplacementdesspécificationsduBeanEntityparJPA,

• Introductiondel’Injectiondeladépendance

• Lifecyclecallbacks

Page 12: Entreprise Java Beans (EJB) - BENELALLAM

LesversionsdesEJB

• Released in2009

Page 13: Entreprise Java Beans (EJB) - BENELALLAM

TypesdesEJB

Ilexistetroistypesd'EJB :• lesbeans desession(sessionbeans)• lesbeans entité(lesentity beans)• Depuislaversion2.0desEJB,ilexisteuntroisièmetypedebean :lesbeans orientésmessage(messagedriven beans).

Page 14: Entreprise Java Beans (EJB) - BENELALLAM

BeanSession

• Lessessionbeans peuventêtrededeuxtypes :sansétat(stateless)ouavecétat(stateful).

• Lesbeans desessionsansétatpeuventêtreutiliséspourtraiterlesrequêtesdeplusieursclients.

• Lesbeans desessionavecétatnesontaccessiblesquelorsd'unouplusieurséchangesaveclemêmeclient.

Page 15: Entreprise Java Beans (EJB) - BENELALLAM

BeanEntité

Lesbeans entitésassurentlapersistancedesdonnées.Ilexistedeuxtypesd'entity bean :• persistancegéréeparleconteneur(CMP:Container

Managed Persistence).Avecunbean entitéCMP(container-managed persistence),c'estleconteneurd'EJBquiassurelapersistancedesdonnées.

• persistancegéréeparlebean (BMP:BeanManagedPersistence).Unbean entitéBMP(bean-managedpersistence),assurelui-mêmelapersistancedesdonnéesgrâceàducodeinclusdanslebean.

Page 16: Entreprise Java Beans (EJB) - BENELALLAM

Message-driven Bean

• Laspécification2.0desEJBdéfinituntroisièmetyped'EJB:lesbeans orientésmessages(message-driven beans).

Page 17: Entreprise Java Beans (EJB) - BENELALLAM

Avantages

• Lesservices(systemlevel)sontassurésparleconteneurEJB

• Encapsulationdelalogiquemétier

• Réutilisationdelalogiquemétier

Page 18: Entreprise Java Beans (EJB) - BENELALLAM

Session Bean

Page 19: Entreprise Java Beans (EJB) - BENELALLAM

SessionBean

Unbean sessionestuntyped'EJBqui:• implémentel'interfaceSessionBean•représente l'étatd'unseul clientdansunserveur.• Lesbeans sessionn’enregistrent paslesdonnéesdansunebasededonnéesetsontsouventassociésàunesessioncliente.

Page 20: Entreprise Java Beans (EJB) - BENELALLAM

LestypesdeSessionBean

Ilexistedeux typesdebeans session,• Stateful (avecétat)• stateless.(sansétat)

Page 21: Entreprise Java Beans (EJB) - BENELALLAM

Stateful

Utiliser unbean sessionavecétat(stateful)si:

• Lebean enregistre desdonnéesd’unseulclient particulier(comme unesessiond’unnavigateurWeb).

• Lebean enregistre desdonnéespendant laduréed’appeldeplusieurs invocationsdeméthodes.

• L’étatduBean représente l’étatdel’interaction entre leclientetleBean

• LeBeandoitconserver del’informationentredeux invocationsduclient

• Dédié àunclient pendanttoutesadurdevie

• LemêmeBeanestutilisé pourservir touslesappelsdumêmeclient

Page 22: Entreprise Java Beans (EJB) - BENELALLAM

Stateless

Utiliser unbean sessionsansétat(stateless)si:

• Lebean n’enregistre pasdesdonnéesd’unseul client

• lebean existepourunappeldeméthodeunique.

• lebean estutilisée pourextraire desdonnéesd'unebasededonnées.

• Pourdes tâchesgénériques

• Pourconsulter enlecture seuledesdonnéespersistantes

Page 23: Entreprise Java Beans (EJB) - BENELALLAM

Stateless Session Bean

Page 24: Entreprise Java Beans (EJB) - BENELALLAM

Stateless SessionBean:cycledevie

Un java bean stateless a deux états possibles ; soit iln'existe pas ( "état inexistant" ) soit il est dans un "étatprêt"; il ne peut pas être dans un "état passif »Normalement, si le besoin de se servir d'un java beansession stateless se fait sentir, le conteneur d'EJB crée etmaintient un pool de java beans sessionstateless, exécute toutes les injections dedépendance et invoque la méthode annotéeavec @PostConstruct si elle existe. Le java bean est, àpartir de ce moment, dans l' "état prêt " à l'emploi i.equ' un client peut faire appel à ce java bean.A la fin du cycle de vie, le conteneur d'EJB appelle laméthode annotée avec @PreDestroy (s' il en existeune) et ainsi l'instance du java bean est mise à ladisposition du ramassemiette (garbage collection) .

Page 25: Entreprise Java Beans (EJB) - BENELALLAM

InterfaceLocalouRemote• Annotations

• @javax.ejb.Local• @javax.ejb.Remote

• Exemple:importjavax.ejb.Remote;@RemotepublicinterfaceCalculatriceItf{publicdoubleadd(doublev1,doublev2);publicdoublesub(doublev1,doublev2);publicdoublemul(doublev1,doublev2);publicdoublediv(doublev1,doublev2);}

Page 26: Entreprise Java Beans (EJB) - BENELALLAM

Stateless SessionBean:ImplémentationAnnotations

@StatelessExemple :

Page 27: Entreprise Java Beans (EJB) - BENELALLAM

Clientlocal• TypiquementuneservletouuneJSPcolocaliséesurlemêmeserveurquelebean

• Mécanismedit"injectiondedépendance• attributdutypedel'interface• Annoté@EJBExemple:publicclassClientServletextendsHttpServlet{@EJBprivateCalculatriceItfmyBean;publicvoidservice(HttpServletRequestreq,HttpServletResponseresp){

resp.setContentType("text/html");PrintWriterout=resp.getWriter();double result=myBean.add(12,4.75);out.println("<html><body>"+result+"</body></html>");}

}

Page 28: Entreprise Java Beans (EJB) - BENELALLAM

• Récupérationdelaréférenceversl'annuaireJNDI• Recherchedubeandansl'annuaire• Appeldesméthodesdubean• Exemple:

publicclassClient {public staticvoidmain(Stringargs[])throwsException {

javax.naming.Context ic=newjavax.naming.InitialContext();CalculatriceItf bean=(CalculatriceItf) ic.lookup("foobar");double res=bean.add(3,6);

}}

Clientdistant

Page 29: Entreprise Java Beans (EJB) - BENELALLAM

Stateful Session Bean

Page 30: Entreprise Java Beans (EJB) - BENELALLAM

Stateful SessionBean:cycledevie

le client initie le cycle de vie d'un bean session stateful en obtenant sa référence (i.e ?? ...) . Ainsi le container exécute toutes les Injections de Dépendance, invoque la méthode ayant l'annotation @PostConstruct s' il en existe une; à partir de là le bean session stateful passe à l' "état prêt" i.e qu'il peut-être utilisé par un client.Pendant le temps où le java bean est dans l'"état prêt", le conteneur d'EJB peut le faire passer dans un état passif.Alafinducycledeviedujava bean,leclientinvoquelaméthodeavecl'annotation @Remove, etleconteneurd'EJBquantàluifaitappelà celle ayantl'annotation@PreDestroy;

Page 31: Entreprise Java Beans (EJB) - BENELALLAM

Stateful SessionBean:Implementation

Page 32: Entreprise Java Beans (EJB) - BENELALLAM

SessionBeanStateful

• 2annotationsprincipales:• @Stateful:déclareunbeanavecétat• @Remove:définitlaméthodedefindesession,lasessionexpireàl'issudel'exécutiondecetteméthode

• Exemple@Stateful

publicclassCartBean implements CartItf{

privateListitems=newArrayList();privateListquantities=newArrayList();

publicvoidaddItem(intref,intqte){...}publicvoidremoveItem( intref){...}

@Remove

publicvoidconfirmOrder() {...}

}

Page 33: Entreprise Java Beans (EJB) - BENELALLAM

Singleton Session Bean

Page 34: Entreprise Java Beans (EJB) - BENELALLAM

SingletonSessionBean

Page 35: Entreprise Java Beans (EJB) - BENELALLAM

SingletonSessionBean

Page 36: Entreprise Java Beans (EJB) - BENELALLAM

SingletonSessionBean

Page 37: Entreprise Java Beans (EJB) - BENELALLAM

Message Driven Bean

Page 38: Entreprise Java Beans (EJB) - BENELALLAM

UtiliserunMessageDriven Beansi:• LeBeandoitêtreexécutésiunmessagearrive.

• Lemessagedoitêtretraitéd’unemanièreasynchrone.

Page 39: Entreprise Java Beans (EJB) - BENELALLAM

MessageDriven Bean:Implementation

• Considéronslacréationd’unbean quipermetd’extraireuntexteenvoyéparunclientpourqu’ilsoitutiliséparuneautreapplication.

• Pourcommencer,ilfaututiliserl’annotation@MessageDriven,enspécifiantletypedemessagequiserapriseencharge(jms/Queue)

Page 40: Entreprise Java Beans (EJB) - BENELALLAM

MessageDriven Bean:Implementation

• Parlasuiteondéfinituneclassepubliqueimplémentantl’interfaceMessageListener,quicontientlamethodeonMessage(Messagemsg)responsabledelalogiquemétier.

Page 41: Entreprise Java Beans (EJB) - BENELALLAM

The JMS API Programming ModelThe basic building blocks of a JMS application consist of• Administered objects: connection factories and

destinations• Connections : A connection encapsulates a virtual

connection with a JMS provider.• Sessions : A session is a single-threaded context for

producing and consuming messages.• Message producers : A message producer is an object

that is created by a session and used for sendingmessages to a destination.

• Message consumers : message consumer is an objectthat is created by a session and used for receivingmessages sent to a destination.

• Messages : abasic formatthat is simplebuthighly flexible,allowing you tocreate messages that matchformatsused bynon-JMSapplications onheterogeneous platforms.

Page 42: Entreprise Java Beans (EJB) - BENELALLAM

JMSMessagingModels

In publish-and-subscribe messaging, one producer cansend a message to many consumers through a virtualchannel called a topic.

The point-to-point messaging model allows JMS clients to send and receive messages both synchronously and asynchronously via virtual channels known as queues.

Page 43: Entreprise Java Beans (EJB) - BENELALLAM

Retoursurlepackaging

• Unfichierd’archived’entreprise(EAR)• ModuleEJB(.jar)• Moduleweb(.war)• Applicationcliente(.jar)• Module‘ResourceAdapter’(.rar)• ....

• Chaquefichierd’archive(ear,war,raroujar)contientundescripteurdedéploiement(fichierxml)

Page 44: Entreprise Java Beans (EJB) - BENELALLAM

Retoursurlepackaging

• Ledescripteurdedéploiementsertàdéfinirlesparamètresdedéploiementd’uneapplication(ear)oud’unmodule

• Exemples:• application.xml:déclarerl’ensembledesmodulesintégrésdansunfichier(.ear)

• ejb-jar.xml:configurerlesEJBdansunmoduled’unfichier(.jar)• web.xml:configurerlesparamètresdumoduleweb(servlets,JSP,TagLib..)d’unfichier(.war)

Page 45: Entreprise Java Beans (EJB) - BENELALLAM

Structured’unfichierEAR

Racine de l’application (.ear)

META-INF Module Web(.war)

Module EJB(.jar)

Module RessourceAdapter

(.rar)

Module applicationCliente(.jar)application.xml

sun-application.xmljboss-application.xml