SlideShare une entreprise Scribd logo
1  sur  21
Java 2 Enterprise Edition
            Tema 5
  EJB (Enterprise Java Beans)
Les capes de negoci i d’integració
   Per a implementar aquestes dues capes, J2EE
    promou un tipus de components distribuïts
    anomenats Enterprise JavaBeans (EJB)




                                                  2
Enterprise Java Beans
   Els EJB són components de lògica de negoci per al
    desenvolupament d’aplicacions distribuïdes basades
    en components.
   Els EJB són components desenvolupats amb Java que
    compleixen unes especificacions i, per tant, es poden
    desplegar a qualsevol contenidor d’EJB d’un servidor
    d’aplicacions compatible amb la plataforma J2EE.
   Els EJB segueixen un model de components en el
    qual el contenidor implementa un conjunt de serveis
    de baix nivell (seguretat, transaccions, etc.) i els
    desenvolupadors es poden centrar en la lògica de
    negoci.
                                                      3
Serveis del contenidor als EJB
   El contenidor proporciona, entre altres, els següents
    serveis de baix nivell:
       Concurrència. Gestiona l’accés concurrent als components.
       Seguretat. Permet definir declarativament polítiques de
        seguretat i restriccions d’accés als components
       Transaccions. Permet definir declarativament el
        comportament transaccional dels mètodes dels components.
        També es pot definir el comportament transaccional de
        manera programàtica.
       Cicle de vida. El contenidor s’encarrega de crear i destruir
        les instàncies dels components.
       Persistència. Permet definir components que gestionin
        declarativament la persistència de les entitats a bases de
        dades relacionals.
                                                                 4
Tipus d’EJB
   L’especificació d’EJB defineix tres tipus bàsics
    d’EJB:
       EJB de sessió (SessionBean). En aquest tipus de
        components hi ha la implementació dels mètodes
        de negoci.
       EJB d’entitat (EntityBean). Aquests components
        permeten representar en forma d’objectes Java
        dades de taules de bases de dades relacionals.
       EJB de missatge (MessageDrivenBean). Es fan
        servir per a interactuar amb missatgeria
        asíncrones.

                                                     5
Els EJB des del client
   Un client, sigui una aplicació o un altre EJB,
    no treballa directament amb els EJB del
    sistema d’EJB.
   Els clients interactuen amb un conjunt
    d’interfícies que proveeixen l’accés als
    components i la seva lògica de negoci: l’API
    JNDI i l’API del client EJB.
       El JNDI permet de trobar els EJB i accedir-hi
        independentment de la seva localització a la xarxa.
       L’API del client EJB és un conjunt d’interfícies i classes que
        els programadors utilitzen al client per a interactuar amb els
        EJB.
                                                                   6
Què forma un EJB? (1)
   Un component EJB no és un únic fitxer sinó que n’està format
    per diversos:
       Fitxers de codi Java desenvolupats pel desenvolupador
       Altres fitxers de codi Java generats automàticament pel contenidor
       Un fitxer XML amb el descriptor de desplegat.




                                                                       7
Què forma un EJB? (2)
   Els fixers que formen part d’un
    component EJB són:
       Classe de l’EJB
       Interfície remota
       Interfície remota d’inici
       Interfície local
       Interfície local d’inici
       Descriptor de desplegament

                                      8
Classe de l’EJB
   Classe Java que conté la implementació del component,
    típicament la lògica de negoci.
   Exemple:
public class HolaBean implements SessionBean {
  // mètodes del cicle de vida
  public void ejbActivate() {}
  public void ejbRemove() {}
  public void ejbPassivate() {}
  public void setSessionContext(SessionContext ctx) {}
  // metode de creació de la instància
  public void ejbCreate () throws CreateException {}
  // mètode de negoci
  public String diguesHola() {
    return “Hola!!”;
  }
}
                                                            9
Interfície remota
   Interfície Java amb els mètodes que poden cridar els
    clients.
   Exemple:
public interface Hola extends EJBObject {
  public String diguesHola()
    throws RemoteException;
}




                                                     10
Interfície remota d’inici
   Interfície Java amb els mètodes de gestió del cicle de
    vida del component que poden cridar els clients
    (creació, destrucció i cerca).
   Exemple:
public interface HolaHome extends EJBHome {
  public Hola create()
    throws CreateException, RemoteException;
}




                                                      11
Interfícies locals i locals d’inici (1)
   Els objectes locals permeten interactuar amb
    EJBs dins la mateixa màquina virtual com si
    estiguéssim fent crides a procediments
    d’objectes locals.
   Hi ha una interfície local per a definir els
    mètodes de negoci (equivalent a la interfície
    remota) i una interfície local d’inici per a
    definir els mètodes del cicle de vida
    (equivalent a la interfície remota d’inici).

                                               12
Interfícies locals i locals d’inici (2)
   Interfície local:
public interface HolaLocal
       extends EJBLocalObject {
  public String diguesHola();
}
   Interfície local d’inici:
public interface HolaLocalHome
       extends EJBLocalHome {
  Hola create() throws CreateException;
}


                                          13
Descriptor de desplegat (1)
   És un fitxer XML on es defineixen els serveis
    del contenidor que necessita el component.
   Alguns serveis que es defineixen al descriptor
    de desplegat són: cicle de vida, requeriments
    de seguretat, requeriments transaccionals,
    requeriments de persistència, etc.
   A l’especificació 2.x d’EJB aquest fitxer
    s’anomena ejb-jar.xml.


                                               14
Descriptor de desplegat (2)
   Exemple:
<ejb-jar>
  <enterprise-beans>
    <session>
      <ejb-name>hola</ejb-name>
      <home>HolaHome</home>
      <remote>Hola</remote>
      <local-home>HolaLocalHome</local-home>
      <local>HolaLocal</local-home>
      <ejb-class>HolaBean</ejb-class>
      <session-type>Stateless</session-type>
      <transaction-type>Container</transaction-type>
    </session>
  </enterprise-beans>
</ejb-jar>

                                                       15
Descriptor de desplegat específic
   La majoria de proveïdors de servidors
    d’aplicacions tenen descriptors de desplegat
    específics per a configurar algun
    comportament del servidor que no
    s’especifiqui al descriptor de desplegat
    estàndard.
   Per exemple el servidor d’aplicacions JBoss
    defineix el fitxer jboss.xml per configurar el
    comportament específic del servidor.

                                                16
Fitxer ejb-jar
   Aquests fitxers s’han d’empaquetar en un
    fitxer .jar comprimit per a formar el mòdul
    que es pot desplegar al servidor d’aplicacions.
   Podem especificar més d’un EJB en un únic
    fitxer ejb-jar.
   Estructura d’un fitxer ejb-jar:




                                                17
Convencions de noms
   Hi ha una sèrie de recomanacions a l’hora de posar
    nom als diferents fitxers que formen el component.
   Per un EJB de sessió sense estat anomenat Hola,
    tendríem:
       La classe del EJB s’anomenarà HolaBean.
       La interfície remota s’anomenarà Hola.
       La interfície remota d’inici s’anomenarà HolaHome.
       La interfície local s’anomenarà HolaLocal.
       La interfície local d’inici s’anomenarà HolaLocalHome.
       El descriptor de desplegat s’anomenarà ejb-jar-xml.
       El fitxer ejb-jar s’anomenarà Hola.jar.


                                                                 18
Crida a un mètode d’un EJB
   Exemple:
// Obtenim una referència a l’arbre JNDI del servidor
Context ctx = new InitialContext();
// Obtenim una referència al EJB Home (suposem que s’ha
// penjat el components al JNDI del servidor d’aplicacions
// amb el nom "ejb/hola"
Object obj = ctx.lookup("ejb/hola");
HolaHome holaHome = (HolaHome)
  PortableRemoteObject.narrow(obj,HolaHome.class);
// Creem el EJB Object a partir del EJB Home obtingut
Hola hola = holaHome.create();
// Cridem al mètode de negoci
System.out.println(hola.diguesHola());



                                                             19
Diàleg entre el client i el servidor (1)




                                      20
Diàleg entre el client i el servidor (2)
1)   S’obté una referència a l’arbre JNDI del servidor d’aplicacions.
2)   S’obté una referència a l’EJB Home del component que volem fer
     servir.
3)   Es fa a una crida al mètode create() de l’EJB Home per a obtenir una
     referència al EJB Object.
4)   L’EJB Home reb la petició de creació i crida al mètode create(), que
     crea una instància de l’EJB Object
5)   L’EJB Home li torna un EJB Object al client.
6)   El client crida al mètode diguesHola() de l’EJB Object per a invocar al
     mètode de negoci.
7)   L’EJB Object reb la petició del mètode de negoci i crida al mètode
     diguesHola() de l’EJB Object. Aquest mètode executa tot el codi
     configurat al descriptor de desplegat que té associat el mètode
     diguesHola() i, finalment, crida al mètode diguesHola() de la classe
     EJB que hem programat.

                                                                       21

Contenu connexe

En vedette

Dennis "Whitey" Lueck's Vegetable Garden
Dennis "Whitey" Lueck's Vegetable GardenDennis "Whitey" Lueck's Vegetable Garden
Dennis "Whitey" Lueck's Vegetable GardenJgeglia
 
L'estudi de tercer B
L'estudi de tercer BL'estudi de tercer B
L'estudi de tercer BLaia P
 
Easy life a business plan
Easy life  a business planEasy life  a business plan
Easy life a business planswatiyadav
 
Un diumenge de neu
Un diumenge de neuUn diumenge de neu
Un diumenge de neublocsjafuda
 
MOTD Presentation for Studio
MOTD Presentation for StudioMOTD Presentation for Studio
MOTD Presentation for Studiojlaquinte
 
Gravity Presentation 8.30.10
Gravity Presentation 8.30.10Gravity Presentation 8.30.10
Gravity Presentation 8.30.10jlaquinte
 
GameWorkshop Pres 2
GameWorkshop Pres 2GameWorkshop Pres 2
GameWorkshop Pres 2jlaquinte
 
Gd2 final pres
Gd2 final presGd2 final pres
Gd2 final presjlaquinte
 

En vedette (15)

Dennis "Whitey" Lueck's Vegetable Garden
Dennis "Whitey" Lueck's Vegetable GardenDennis "Whitey" Lueck's Vegetable Garden
Dennis "Whitey" Lueck's Vegetable Garden
 
L'estudi de tercer B
L'estudi de tercer BL'estudi de tercer B
L'estudi de tercer B
 
Excel
ExcelExcel
Excel
 
Easy life a business plan
Easy life  a business planEasy life  a business plan
Easy life a business plan
 
Sumary of thesis 1
Sumary of thesis  1Sumary of thesis  1
Sumary of thesis 1
 
Ancient rome
Ancient romeAncient rome
Ancient rome
 
Un diumenge de neu
Un diumenge de neuUn diumenge de neu
Un diumenge de neu
 
MOTD Presentation for Studio
MOTD Presentation for StudioMOTD Presentation for Studio
MOTD Presentation for Studio
 
El patufet
El patufetEl patufet
El patufet
 
Gravity Presentation 8.30.10
Gravity Presentation 8.30.10Gravity Presentation 8.30.10
Gravity Presentation 8.30.10
 
Report card powerpoint oct 2011
Report card powerpoint oct 2011Report card powerpoint oct 2011
Report card powerpoint oct 2011
 
GameWorkshop Pres 2
GameWorkshop Pres 2GameWorkshop Pres 2
GameWorkshop Pres 2
 
I pod, upod, we all love apps
I pod, upod, we all love appsI pod, upod, we all love apps
I pod, upod, we all love apps
 
Gd2 final pres
Gd2 final presGd2 final pres
Gd2 final pres
 
Advanced Scholars Program GAGC Presentation
Advanced Scholars Program GAGC PresentationAdvanced Scholars Program GAGC Presentation
Advanced Scholars Program GAGC Presentation
 

Similaire à Tema5

El framework Cakephp
El framework CakephpEl framework Cakephp
El framework Cakephpherotyc
 
Turbo Gears, Framework De Python Per Aplicacions Web
Turbo Gears, Framework De Python Per Aplicacions WebTurbo Gears, Framework De Python Per Aplicacions Web
Turbo Gears, Framework De Python Per Aplicacions WebTomàs Reverter
 
Dai 9 - Ruby on Rails
Dai 9 - Ruby on RailsDai 9 - Ruby on Rails
Dai 9 - Ruby on RailsCarles Mateu
 
Itineraris IT Academy (2020)
Itineraris IT Academy (2020)Itineraris IT Academy (2020)
Itineraris IT Academy (2020)Barcelona Activa
 
Resum
ResumResum
Resumcfgmi
 
Dai 09-ruby on rails
Dai 09-ruby on railsDai 09-ruby on rails
Dai 09-ruby on railsCarles Mateu
 
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Miquel Boada Artigas
 
Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Miquel Boada Artigas
 
Programació Web - PAC 2 correcció - Multimèdia (UOC) - Paquita Ribas
Programació  Web - PAC 2 correcció - Multimèdia (UOC) - Paquita RibasProgramació  Web - PAC 2 correcció - Multimèdia (UOC) - Paquita Ribas
Programació Web - PAC 2 correcció - Multimèdia (UOC) - Paquita RibasPaquita Ribas
 
Cas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries LliuresCas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries LliuresJordi Catà
 

Similaire à Tema5 (16)

El framework Cakephp
El framework CakephpEl framework Cakephp
El framework Cakephp
 
J2EE
J2EEJ2EE
J2EE
 
Turbo Gears, Framework De Python Per Aplicacions Web
Turbo Gears, Framework De Python Per Aplicacions WebTurbo Gears, Framework De Python Per Aplicacions Web
Turbo Gears, Framework De Python Per Aplicacions Web
 
CakePHP
CakePHPCakePHP
CakePHP
 
Dai 9 - Ruby on Rails
Dai 9 - Ruby on RailsDai 9 - Ruby on Rails
Dai 9 - Ruby on Rails
 
Itineraris IT Academy (2020)
Itineraris IT Academy (2020)Itineraris IT Academy (2020)
Itineraris IT Academy (2020)
 
Presentació del servidor Apache
Presentació del servidor ApachePresentació del servidor Apache
Presentació del servidor Apache
 
Resum
ResumResum
Resum
 
Dai 09-ruby on rails
Dai 09-ruby on railsDai 09-ruby on rails
Dai 09-ruby on rails
 
Presentació Ajax
Presentació AjaxPresentació Ajax
Presentació Ajax
 
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
 
Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.
 
J2EE
J2EEJ2EE
J2EE
 
Trabajo uf4 m8
Trabajo uf4 m8Trabajo uf4 m8
Trabajo uf4 m8
 
Programació Web - PAC 2 correcció - Multimèdia (UOC) - Paquita Ribas
Programació  Web - PAC 2 correcció - Multimèdia (UOC) - Paquita RibasProgramació  Web - PAC 2 correcció - Multimèdia (UOC) - Paquita Ribas
Programació Web - PAC 2 correcció - Multimèdia (UOC) - Paquita Ribas
 
Cas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries LliuresCas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries Lliures
 

Dernier

MECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERATMECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERATLasilviatecno
 
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptxXARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptxCRIS650557
 
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,Lasilviatecno
 
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdf
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdfELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdf
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdfErnest Lluch
 
Menú maig 24 escola ernest Lluch (1).pdf
Menú maig 24 escola ernest Lluch (1).pdfMenú maig 24 escola ernest Lluch (1).pdf
Menú maig 24 escola ernest Lluch (1).pdfErnest Lluch
 

Dernier (7)

itcs - institut tècnic català de la soldadura
itcs - institut tècnic català de la soldaduraitcs - institut tècnic català de la soldadura
itcs - institut tècnic català de la soldadura
 
MECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERATMECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERAT
 
HISTÒRIES PER A MENUTS II. CRA Serra del Benicadell.pdf
HISTÒRIES PER A MENUTS II. CRA  Serra del Benicadell.pdfHISTÒRIES PER A MENUTS II. CRA  Serra del Benicadell.pdf
HISTÒRIES PER A MENUTS II. CRA Serra del Benicadell.pdf
 
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptxXARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
 
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
 
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdf
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdfELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdf
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdf
 
Menú maig 24 escola ernest Lluch (1).pdf
Menú maig 24 escola ernest Lluch (1).pdfMenú maig 24 escola ernest Lluch (1).pdf
Menú maig 24 escola ernest Lluch (1).pdf
 

Tema5

  • 1. Java 2 Enterprise Edition Tema 5 EJB (Enterprise Java Beans)
  • 2. Les capes de negoci i d’integració  Per a implementar aquestes dues capes, J2EE promou un tipus de components distribuïts anomenats Enterprise JavaBeans (EJB) 2
  • 3. Enterprise Java Beans  Els EJB són components de lògica de negoci per al desenvolupament d’aplicacions distribuïdes basades en components.  Els EJB són components desenvolupats amb Java que compleixen unes especificacions i, per tant, es poden desplegar a qualsevol contenidor d’EJB d’un servidor d’aplicacions compatible amb la plataforma J2EE.  Els EJB segueixen un model de components en el qual el contenidor implementa un conjunt de serveis de baix nivell (seguretat, transaccions, etc.) i els desenvolupadors es poden centrar en la lògica de negoci. 3
  • 4. Serveis del contenidor als EJB  El contenidor proporciona, entre altres, els següents serveis de baix nivell:  Concurrència. Gestiona l’accés concurrent als components.  Seguretat. Permet definir declarativament polítiques de seguretat i restriccions d’accés als components  Transaccions. Permet definir declarativament el comportament transaccional dels mètodes dels components. També es pot definir el comportament transaccional de manera programàtica.  Cicle de vida. El contenidor s’encarrega de crear i destruir les instàncies dels components.  Persistència. Permet definir components que gestionin declarativament la persistència de les entitats a bases de dades relacionals. 4
  • 5. Tipus d’EJB  L’especificació d’EJB defineix tres tipus bàsics d’EJB:  EJB de sessió (SessionBean). En aquest tipus de components hi ha la implementació dels mètodes de negoci.  EJB d’entitat (EntityBean). Aquests components permeten representar en forma d’objectes Java dades de taules de bases de dades relacionals.  EJB de missatge (MessageDrivenBean). Es fan servir per a interactuar amb missatgeria asíncrones. 5
  • 6. Els EJB des del client  Un client, sigui una aplicació o un altre EJB, no treballa directament amb els EJB del sistema d’EJB.  Els clients interactuen amb un conjunt d’interfícies que proveeixen l’accés als components i la seva lògica de negoci: l’API JNDI i l’API del client EJB.  El JNDI permet de trobar els EJB i accedir-hi independentment de la seva localització a la xarxa.  L’API del client EJB és un conjunt d’interfícies i classes que els programadors utilitzen al client per a interactuar amb els EJB. 6
  • 7. Què forma un EJB? (1)  Un component EJB no és un únic fitxer sinó que n’està format per diversos:  Fitxers de codi Java desenvolupats pel desenvolupador  Altres fitxers de codi Java generats automàticament pel contenidor  Un fitxer XML amb el descriptor de desplegat. 7
  • 8. Què forma un EJB? (2)  Els fixers que formen part d’un component EJB són:  Classe de l’EJB  Interfície remota  Interfície remota d’inici  Interfície local  Interfície local d’inici  Descriptor de desplegament 8
  • 9. Classe de l’EJB  Classe Java que conté la implementació del component, típicament la lògica de negoci.  Exemple: public class HolaBean implements SessionBean { // mètodes del cicle de vida public void ejbActivate() {} public void ejbRemove() {} public void ejbPassivate() {} public void setSessionContext(SessionContext ctx) {} // metode de creació de la instància public void ejbCreate () throws CreateException {} // mètode de negoci public String diguesHola() { return “Hola!!”; } } 9
  • 10. Interfície remota  Interfície Java amb els mètodes que poden cridar els clients.  Exemple: public interface Hola extends EJBObject { public String diguesHola() throws RemoteException; } 10
  • 11. Interfície remota d’inici  Interfície Java amb els mètodes de gestió del cicle de vida del component que poden cridar els clients (creació, destrucció i cerca).  Exemple: public interface HolaHome extends EJBHome { public Hola create() throws CreateException, RemoteException; } 11
  • 12. Interfícies locals i locals d’inici (1)  Els objectes locals permeten interactuar amb EJBs dins la mateixa màquina virtual com si estiguéssim fent crides a procediments d’objectes locals.  Hi ha una interfície local per a definir els mètodes de negoci (equivalent a la interfície remota) i una interfície local d’inici per a definir els mètodes del cicle de vida (equivalent a la interfície remota d’inici). 12
  • 13. Interfícies locals i locals d’inici (2)  Interfície local: public interface HolaLocal extends EJBLocalObject { public String diguesHola(); }  Interfície local d’inici: public interface HolaLocalHome extends EJBLocalHome { Hola create() throws CreateException; } 13
  • 14. Descriptor de desplegat (1)  És un fitxer XML on es defineixen els serveis del contenidor que necessita el component.  Alguns serveis que es defineixen al descriptor de desplegat són: cicle de vida, requeriments de seguretat, requeriments transaccionals, requeriments de persistència, etc.  A l’especificació 2.x d’EJB aquest fitxer s’anomena ejb-jar.xml. 14
  • 15. Descriptor de desplegat (2)  Exemple: <ejb-jar> <enterprise-beans> <session> <ejb-name>hola</ejb-name> <home>HolaHome</home> <remote>Hola</remote> <local-home>HolaLocalHome</local-home> <local>HolaLocal</local-home> <ejb-class>HolaBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans> </ejb-jar> 15
  • 16. Descriptor de desplegat específic  La majoria de proveïdors de servidors d’aplicacions tenen descriptors de desplegat específics per a configurar algun comportament del servidor que no s’especifiqui al descriptor de desplegat estàndard.  Per exemple el servidor d’aplicacions JBoss defineix el fitxer jboss.xml per configurar el comportament específic del servidor. 16
  • 17. Fitxer ejb-jar  Aquests fitxers s’han d’empaquetar en un fitxer .jar comprimit per a formar el mòdul que es pot desplegar al servidor d’aplicacions.  Podem especificar més d’un EJB en un únic fitxer ejb-jar.  Estructura d’un fitxer ejb-jar: 17
  • 18. Convencions de noms  Hi ha una sèrie de recomanacions a l’hora de posar nom als diferents fitxers que formen el component.  Per un EJB de sessió sense estat anomenat Hola, tendríem:  La classe del EJB s’anomenarà HolaBean.  La interfície remota s’anomenarà Hola.  La interfície remota d’inici s’anomenarà HolaHome.  La interfície local s’anomenarà HolaLocal.  La interfície local d’inici s’anomenarà HolaLocalHome.  El descriptor de desplegat s’anomenarà ejb-jar-xml.  El fitxer ejb-jar s’anomenarà Hola.jar. 18
  • 19. Crida a un mètode d’un EJB  Exemple: // Obtenim una referència a l’arbre JNDI del servidor Context ctx = new InitialContext(); // Obtenim una referència al EJB Home (suposem que s’ha // penjat el components al JNDI del servidor d’aplicacions // amb el nom "ejb/hola" Object obj = ctx.lookup("ejb/hola"); HolaHome holaHome = (HolaHome) PortableRemoteObject.narrow(obj,HolaHome.class); // Creem el EJB Object a partir del EJB Home obtingut Hola hola = holaHome.create(); // Cridem al mètode de negoci System.out.println(hola.diguesHola()); 19
  • 20. Diàleg entre el client i el servidor (1) 20
  • 21. Diàleg entre el client i el servidor (2) 1) S’obté una referència a l’arbre JNDI del servidor d’aplicacions. 2) S’obté una referència a l’EJB Home del component que volem fer servir. 3) Es fa a una crida al mètode create() de l’EJB Home per a obtenir una referència al EJB Object. 4) L’EJB Home reb la petició de creació i crida al mètode create(), que crea una instància de l’EJB Object 5) L’EJB Home li torna un EJB Object al client. 6) El client crida al mètode diguesHola() de l’EJB Object per a invocar al mètode de negoci. 7) L’EJB Object reb la petició del mètode de negoci i crida al mètode diguesHola() de l’EJB Object. Aquest mètode executa tot el codi configurat al descriptor de desplegat que té associat el mètode diguesHola() i, finalment, crida al mètode diguesHola() de la classe EJB que hem programat. 21