entreprise java beans (ejb) - benelallam.org · les versions des ejb • stateful session et...

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

Upload: lekhuong

Post on 12-Aug-2019

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Chapitre 3: Architectures distribuéesEntrepriseJavaBeans (EJB)

Page 2: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Limitationsdesarchitecturesn-tiersclassiques• leserveurd’applicationconstituelapierreangulairedel'architectureetsetrouvesouventfortementsollicitéetilestdifficilederépartirlachargeentreclientsetserveur.

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

• Etlessolutionsmisesenœuvresontrelativementcomplexesàmainteniretlaréutilisationdescomposantsestpresqueimpossible.

Page 3: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Verslesarchitecturesn-tiersdistribuées

Page 4: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Entreprise Java Beans

Page 5: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

ArchitecturedesEJB

Enterprise JavaBeans (EJB) • est une architecture

distribuée offrant des composants logiciels déployés côté serveur.

• Cette architecture propose un cadre pour créer des composants distribués et facilement réutilisables.

Page 6: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

ArchitecturedesEJB

• Les EJB sont hébergés au sein d'un conteneur EJB évoluant dans un contexte transactionnel.

• Ils permettent de :1. représenter des données

(EJB Entity), 2. de proposer des services

avec ou sans conservation d'état entre les appels (EJB session),

3. ou encore d'accomplir des tâches de manière asynchrone (EJB dit message).

Page 7: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

LesversionsdesEJB

• Stateful sessionetStatelesssession

• Interfaces:HomeRemote

Page 8: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

LesversionsdesEJB

• BeanEntitéet• ledescripteurde

déploiementXML

Page 9: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

LesversionsdesEJB

• IntroductiondeLocaleinterfacepourlepassageparréférence.

• miseenchargedesrequêtesSQL

Page 10: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

LesversionsdesEJB

• Priseenchargedesservicesweb,

• EtdesprotocolesSOAPandHTTP.

Page 11: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

LesversionsdesEJB

• Unfocussurleease ofuse,

• RemplacementdesspécificationsduBeanEntityparJPA,

• Introductiondel’Injectiondeladépendance

• Lifecyclecallbacks

Page 12: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

LesversionsdesEJB

• Ease ofuse,again !• Unenouvelle

annotationfaitsonapparition: @Schedule

• lesméthodesdessessionsbeans peuventêtreappeléesdefaçonasynchrone

• Aveclaversion3.1,lesstateful webservicesserontaussisupportés.

Page 13: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

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.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

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.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

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.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Message-driven Bean

• Lesbeans orientésmessages(message-driven beans)peuventêtreutilisésdansuncontexted’appelsasynchrones.

Page 17: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Avantages

• Lesservices(systemlevel)sontassurésparleconteneurEJB

• Encapsulationdelalogiquemétier

• Réutilisationdelalogiquemétier

Page 18: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Session Bean

Page 19: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

SessionBean

Unbean sessionestuntyped'EJBqui:• implémentel'interfaceSessionBean•représentel'étatd'unseulclientdansunserveur.

Page 20: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

LestypesdeSessionBean

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

Page 21: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Stateless

Utiliser unbean sessionsansétat(stateless)si:

• Lebean n’enregistre pasdesdonnéesd’unclient

• lebean doitfaireunappeldeméthode.

• lebean estutilisé pourextraire desdonnéesd'unebasededonnéessanspersistance danslasession.

• Pourconsulter enlecture seuledesdonnéespersistantes.

Page 22: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Stateful

Utiliser unbean sessionavecétat(stateful)si:

• Lebean enregistre desdonnéesd’unseulclient particulier pendantladuréed’appeldeplusieurs invocationsdeméthodes(commeunesessiond’unnavigateurWeb).

• LemêmeBeanestutilisé pourservir touslesappelsdumêmeclient

Page 23: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Stateless Session Bean

Page 24: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Stateless SessionBean:cycledevieUn 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 »1. si le besoin de se servir d'un java bean session

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.

2. Le java bean est, à partir de ce moment, dansl' "état prêt " à l'emploi (i.e qu' un client peut faireappel à ce java bean).

3. 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.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

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.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Stateless SessionBean:ImplémentationAnnotations

@StatelessExemple :

Page 27: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

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.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

• 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.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Stateful Session Bean

Page 30: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Stateful SessionBean:cycledevie1. le client initie le cycle de vie d'un bean session

stateful en obtenant sa référence. Ainsi le container exécute toutes les Injections de Dépendance, invoque la méthode ayant l'annotation @PostConstruct s' il en existe une;

2. à partir de là le bean session stateful passe à l' "état prêt" i.e qu'il peut-être utilisé par un client.

3. 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.

4. Alafinducycledeviedujava bean,leclientinvoquelaméthodeavecl'annotation @Remove, etleconteneurd'EJBquantàluifaitappelà celle ayantl'annotation@PreDestroy;

Page 31: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Stateful SessionBean:Implémentation

Page 32: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

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.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Singleton Session Bean

Page 34: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

SingletonSessionBean

il est possible de définir un EJB qui aura les caractéristiques du design pattern singleton : • le conteneur garantit

qu'une seule instance de cet EJB sera utilisable et partagée dans le conteneur.

• Un EJB singleton est utilisé principalement pour partager ou mettre en cache des données dans l'application.

Page 35: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

SingletonSessionBean:Avantages

L'avantage des EJB Singleton c'est qu'ils offrent tous les services d'un EJB : sécurité, transaction, injection de dépendances, gestion du cycle de vie …

Page 36: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

SingletonSessionBean

Page 37: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Message Driven Bean

Page 38: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

MessageDriven Bean:Définition

• Message-Drivenbeans =beans accessiblesparmessaging asynchrone• NouveautéapparueavecEJB2.0,• Messaging =moyendecommunicationléger,comparéàRMI-IIOP,• Pratiquedansdenombreuxcas.

Page 39: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

MessageDriven Bean:Casd’utilisation

UtiliserunMessageDriven Beansi:• LeBeandoitêtreexécutélorsqu’unmessageestarrivé.

• Lemessagedoitêtretraitéd’unemanièreasynchrone.

Page 40: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

MessageDriven Bean:Motivation

• Performance• UnclientRMI-IIOPattend pendantqueleserveureffectueletraitementd'unerequête,

• Fiabilité• Lorsqu'unclientRMI-IIOPparleavecunserveur,cedernierdoitêtreentraindefonctionner.S'ilcrashe,ousileréseaucrashe,leclientestcoincé.

• Pasdebroadcasting !• RMI-IIOPlimitelesliaisons1clientvers1serveur

Page 41: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Messaging

• C'estcommelemail!Oucommesionavaitunetroisièmeentitéentreleclientetleserveur!

Page 42: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Messaging

• MessageOriented Middleware(MOM)estlenomdonnéauxmiddlewaresquisupportentlemessaging.

• Tibco Rendezvous,IBMMQSeries,BEATuxedo/Q,MicrosoftMSMQ,Talarian SmartSockets,ProgressSonicMQ,Fiorano FioranoMQ,…

• Cesproduitsfournissent:messagesavecgarantiedelivraison,toléranceauxfautes,load-balancing desdestinations,etc…

Page 43: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

TheJavaMessageService(JMS)

• LesserveursMOMsontpourlaplupartpropriétaires:pasdeportabilitédesapplications!

• JMS=unstandardpournormaliserleséchangesentrecomposantetserveurMOM,

• UneAPIpourledéveloppeur,• UnServiceProviderInterface(SPI),pourrendreconnecterl'APIetlesserveursMOM,vialesdriversJMS

Page 44: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

JMS:MessagingDomains• Avantdefairedumesaging,ilfautchoisirundomaine

• Domaine=typedemessaging

• Domainespossibles• Publish/Subscribe(pub/sub):nproducteurs,nconsommateurs(tv)

• PointToPoint(PTP):nproducteurs,1consommateur

Page 45: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

JMS:lesétapes

1. Localiser ledriverJMS• lookup JNDI.Ledriverestuneconnection factory

2. Créeruneconnection JMS• obteniruneconnection àpartirdelaconnection

factory

3. Créerunesession JMS• Ils'agitd'unobjetquivaserviràrecevoiret

envoyerdesmessages.Onl'obtientàpartirdelaconnection.

4. Localiser ladestination JMS• Ils'agitducanal,delachaînetélé!Normalement,

c'estrégléparledéployeur.Onobtientladestination viaJNDI.

5. Créerunproducteur ouunconsommateur JMS• Utiliséspourécrireoulireunmessage.Onles

obtientàpartirdeladestination oudelasession.

6. Envoyer ourecevoir unmessage

Page 46: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

JMS:lesinterfaces

Page 47: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

JMS:exempledecode(1)

Page 48: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

JMS:exempledecode(2)

Note : Dans 3) false = pas de transactions, AUTO_AKNOWLEDGE = inutile ici puisqu’on envoie des messages.

Page 49: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

IntégrerJMSetlesEJB

• Pourquoicréerunnouveautyped'EJB?• Pourquoinepasavoirdéléguéletravailàunobjetspécialisé?• Pourquoinepasavoiraugmentélescaractéristiquesdessessionbeans?

• Parcequeainsionpeutbénéficierdetouslesavantagesdéjàrencontrés:cycledevie,pooling,descripteursspécialisés,codesimple…

Page 50: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Qu'est-cequ'unMessage-DrivenBean?

• UnEJBquipeutrecevoirdesmessages• Ilconsommedesmessagesdepuislesqueuesoutopics,envoyésparlesclientsJMS

Page 51: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Qu'est-cequ'unMessage-DrivenBean?

• Unclientn'accèdepasàunMDBviauneinterface,ilutilisel'APIJMS,• UnMDBn'apasd'interfaceHome,LocalHome,Remote ouLocal,• LesMDBpossèdentuneseuleméthode,faiblementtypée:onMessage()

• ElleaccepteunmessageJMS(BytesMessage,ObjectMessage,TextMessage,StreamMessage ouMapMessage)

• Pasdevérificationdetypesàlacompilation.• Utiliserinstanceof aurun-timepourconnaîtreletypedumessage.

• LesMDBn'ontpasdevaleurderetour• Ilssontdécouplésdesproducteurs demessages.

• LesMDBnerenvoientpasd'exceptionsauclient(maisaucontainer),• LesMDBsontstateless…

Page 52: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

DévelopperunMessage-Driven Bean• LesMDBs doiventimplémenterpublic interface javax.jms.MessageListener {

public void onMessage(Message message);

}

public interface javax.ejb.MessageDrivenBean

extends EnterpriseBean {

public void ejbRemove()

throws EJBException;

public void setMessageDrivenContext(MessageDrivenContext ctx)

throws EJBException;

}

• Laclassed'implémentationdoitfourniruneméthodeejbCreate() quirenvoitvoid etquin'apasd'arguments.

Page 53: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

DévelopperunMessage-Driven Bean

• Méthodesquidoiventêtreimplémentées• onMessage(Message)

• Invoquéeàchaqueconsommationdemessage• UnmessageparinstancedeMBD,poolingassuréparlecontainer

• setMessageDrivenContext(MessageDrivenContext)• AppeléeavantejbCreate,sertàrécupèrerlecontexte.• Necontientquedesméthodesliéesauxtransactions…

Page 54: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

DévelopperunMessage-Driven Bean

Page 55: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Unexemplesimple

• UnMDBquifaitdulogging,c'estàdireaffichedesmessagesdetextesàl'écranchaquefoisqu'ilconsommeunmessage.

• Utilepourdébugger….

• Rappel:pasd'interfaces!

Page 56: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Laclassedubean

Page 57: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Laclassedubean(suite)

Page 58: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Question?

• Commentsait-onquellequeueouqueltopicdemessageslebeanconsomme?

• Celan'apparaîtpasdansledescripteur!

• C'estfaitexprèspourrendrelesMDBportablesetréutilisables.• L'informationsetrouvedansl’@ActivationConfigPropertyaudébutducode

Page 59: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Leclient(1)import javax.naming.*;

import javax.jms.*;

import java.util.*;

public class Client {

public static void main (String[] args) throws Exception {

// Initialize JNDI

Context ctx = new InitialContext(System.getProperties());

// 1: Lookup ConnectionFactory via JNDI

TopicConnectionFactory factory =

(TopicConnectionFactory)

ctx.lookup("javax.jms.TopicConnectionFactory");

// 2: Use ConnectionFactory to create JMS connection

TopicConnection connection =

factory.createTopicConnection();

Page 60: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Leclient(2)

// 3: Use Connection to create session

TopicSession session = connection.createTopicSession(

false, Session.AUTO_ACKNOWLEDGE);

// 4: Lookup Destination (topic) via JNDI

Topic topic = (Topic) ctx.lookup("testtopic");

// 5: Create a Message Producer

TopicPublisher publisher = session.createPublisher(topic);

// 6: Create a text message, and publish it

TextMessage msg = session.createTextMessage();

msg.setText("This is a test message.");

publisher.publish(msg);

}

}

Page 61: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

MessageDriven Bean:Implémentation

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

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

Page 62: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

MessageDriven Bean:Implémentation

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

Page 63: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

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 64: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

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 65: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

Retoursurlepackaging

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

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

Page 66: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

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 67: Entreprise Java Beans (EJB) - benelallam.org · Les versions des EJB • Stateful session et Stateless session • Interfaces : Home Remote. Les versions des EJB • Bean Entité

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