programmera.net -> ejb -> normal     för utskrift      info@programmera.net

Anrop av en SessionBean, steg för steg

1. Innan bönan används
2. Första steget: RMI-registret
3. Andra steget: Home
4. Tredje steget: Använd bönan

1. Innan bönan används

Innan din böna används av klienten finns bara följande objekt:



De tre objekt som du måste skriva själv är:

  1. Z, ett gränssnitt som definierar affärslogiken för ZBean, ärver av EJBObject.
  2. ZBean, en EJB som implementerar affärslogiken, ärver av EnterpriseBean.
  3. ZHome, ett gränssnitt som ofta bara innehåller metoden create(), ärver av EJBHome.
Huruvida ZBean finns initierad skiljer sig åt beroende på vilken typ av böna ZBean är, mer om det senare. Utnyttjandet av bönan går genom tre steg:

2. Första steget: RMI-registret

Det första som händer då klienten ska använda bönan är att RMI-registret kontaktas. RMI-registret används även i EJB, men här bara för att komma åt bönans Home-objekt. Varje böna har ett Home-objekt, som har till uppgift att skapa bönan och returnera en stubbe till bönans EJBObject. RMI-registret används som visas nedan:



  1. Klienten gör ett JNDI-uppslag på namnet "Z".
  2. RMI-registret returnerar en ZHome-stubbe till klienten.

3. Andra steget: Home

Home har vanligtvis bara en metod; create(). För att kunna använda ZBean anropar man först ZHome.create(). Om ZBean är "stateless" nyttjar create() existerande instanser i poolen. Om ZBean är "stateful" skapar metoden create() dessutom instanser för följande klasser:

  1. ZBean
  2. ZObject
Bilden visar hur create() fungerar för en "stateful" ZBean:



  1. Klienten anropar ZHome.create() som översätts av stubben till ett paket.
  2. ZHome-stubben skickar paketet över nätverket till ZHome-skelettet.
  3. ZHome-skelettet skickar paketet till ZHomeImpl som tolkar paketet.
  4. ZHomeImpl ber EJB-behållaren att skapa en instans av ZBean och ZObject.
  5. EJB-behållaren skapar (om ZBean är en StatefulSessionBean) en instans av ZBean.
  6. EJB-behållaren skapar en instans av ZObject.
  7. EJB-behållaren sänder över klassen ZObject-stubbe (alltså .class-filen) till klienten.

4. Tredje steget: Använd bönan

Nu har vi kommit fram till sista steget, då bönan faktiskt ska användas av klienten. Klienten ser bara de metoder som definieras i gränssnittet Z.



  1. Klientklassen anropar en metod i gränssnittet Z och ZObject-stubben omvandlar anropet till ett paket.
  2. ZObject-stubben skickar paketet över nätverket till ZObject-skelettet.
  3. ZObject-skelettet skickar paketet till ZObject som tolkar paketet.
  4. ZObject kontrollerar att anroparen har rättigheter att använda ZBean och frågar sedan EJB-behållaren efter en ZBean.
  5. EJB-behållaren letar efter en ZBean som uppfyller de krav som situationen ställer, t.ex. att bönan är ledig och kapabel att påbörja en transaktion.