Enterprise JavaBeans 1.4 platform (EJB 2.0) Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2007. 11.13. Az Enterprise JavaBeans
Az Enterprise Javabeans Az Enterprise JavaBeans (EJB) szerver oldali komponens, amely Az üzleti logika valamely elemének reprezentációja Egy konténerben fut A konténer szolgáltatásokat biztosít a bean számára
• tranzakciókezelés • perzisztencia • biztonsági funkciók
A kliens soha nem közvetlenül az EJB-vel van kapcsolatban, hanem a konténerrel Az Enterprise JavaBeans
EJB / 2
A kliens és az EJB kapcsolata
Az Enterprise JavaBeans
EJB / 3
Az EJB ré részei Több file, amelyek JAR file-ba vannak foglalva Deployment descriptor (telepítés leíró) XML file, információkat tartalmaz a bean-ről. Például Perzisztencia fajtája Tranzakció fajtája Egy segédprogrammal állítható elő
EJB / 4
Az Enterprise JavaBeans
Az EJB ré részei (folyt.) Interface-ek Remote interface, amely a bean "hasznos" funkcióinak elérési pontja Home interface, amely a bean életciklusát kezeli A fentiek lokálisan elérhető változatai
Az interface-eket implementáló bean osztály Segítő osztályok, amelyek a bean osztály implementálásához szükségesek (adatok, kivételek stb.) EJB / 5
Az Enterprise JavaBeans
Elnevezé Elnevezési konvenció konvenció Szokásos az alábbi elnevezési konvenció használata: Item
Syntax
Example
Enterprise bean name
EJB
AccountEJB
EJB JAR display name JAR
AccountJAR
Enterprise bean class
Bean
AccountBean
Home interface
Home
AccountHome
Remote interface
Account
Local home interface
LocalHome
LocalAccountHome
Local interface
Local
LocalAccount
Az Enterprise JavaBeans
EJB / 6
A session Bean Egy egyszerű kliens kérést reprezentál a szerveren Elválasztja a klienst a szerver által végzett bonyolultabb tevékenységektől Általában egy klienst tud kiszolgálni egyszerre Ha a kliens terminálódik, a bean is megszűnik Ha a szerver leáll, a bean elvész Két fajtája van: Stateful (állapottal rendelkező) session bean Stateless (állapot nélküli) session bean EJB / 7
Az Enterprise JavaBeans
Stateful session bean Megőrzi a kliens egyes hívásai között az adatokat Ha a szervernek memóriát kell felszabadítania, a bean-t el kell mentenie, majd szükség esetén visszaállítania
EJB / 8
Az Enterprise JavaBeans
Stateful session bean életciklusa Kliens hívja Konténer hívja ("callback")
Memóriában van
Háttértáron van
Az Enterprise JavaBeans
EJB / 9
Stateless session bean Semmilyen klienssel kapcsolatos információt nem őriz meg a kliens hívásai között Csak egy metódus végrehajtásának idejére tud adatokat megőrizni Bármely példány egyenértékű a kliensek számára Metódushívás idején kívül a szerver kisöpörheti a memóriából lementés nélkül Hatékonyabban tud működni EJB / 10
Az Enterprise JavaBeans
Stateless session bean életciklusa Kliens hívja Konténer hívja
Az Enterprise JavaBeans
EJB / 11
Session beanbean-ek haszná használata Egy időben csak egy kliens használja Az állapotát nem, vagy csak rövid időre kell megőriznie
Az Enterprise JavaBeans
EJB / 12
Stateful session bean haszná használata Vannak a kliens és a bean párbeszédére jellemző adatok Vannak két hívás között megőrzendő adatok A bean valójában összekötő elem a kliens és az alkalmazás más komponense(i) között A bean más EJB-k közötti munkamegosztást vezérel
Az Enterprise JavaBeans
EJB / 13
Stateless session bean haszná használata Nincs kliens specifikus adat Általános feladatot lát el a kliensek részére
Az Enterprise JavaBeans
EJB / 14
Az entity bean Egy állandó tárolásra szánt objektum (adatbázis tartalom) reprezentálása a feladata Legfontosabb jellemzői: Perzisztencia: státusa az alkalmazás vagy a szerver élettartamán kívül is megőrződik. Megosztott (shared) elérés: egyszerre több kliens is használhatja. Az adatmódosítás konzisztenciáját a tranzakció kezelés biztosítja. Van egyedi azonosítója (primary key). Kapcsolatok: kapcsolatban állhat más entity beanekkel. Az Enterprise JavaBeans
EJB / 15
A perzisztencia biztosí biztosítása Egyszerű Java objektumoknál Java Object Serialization Object Relational Mapping
Entity Bean-ek esetén: leképezés relációs adatbázisra Egy bean-hez egy tábla tartozik A tábla sorai a bean egy-egy állapotát jelentik A bean adattagjai a tábla mezőinek felelnek meg Egy példányosított entity bean az adatbázis egy view-ja A konténer vagy a bean kódja valósítja meg Az Enterprise JavaBeans
EJB / 16
A perzisztencia biztosí biztosítása (folyt.) Container-Managed Persistence (CMP) A bean adatbázisra való leképezése a konténer feladata. A leképezendő adatok a perzisztens mezők (persistent fields). A perzisztens mezők nem adattagok a bean osztályban, hanem a telepítés leíróban tárolt "absztrakt sémák". A bean osztály kódjában a perzisztens mezők csak a "getter - setter" metódusaikkal vannak jelen. A konténer a bean-t egy táblára, a perzistens mezőket a tábla mezőire (oszlopaira) képezi le. Az Enterprise JavaBeans
EJB / 17
A perzisztencia biztosí biztosítása (folyt.) Container-Managed Persistence (CMP) (folyt.) A bean állapotának (perzisztens mezői értékeinek) és az adatbázis táblának a szinkronizálása automatikus. A bean osztály nem tartalmaz adatbázis kezelő kódot. A bean implementációja teljesen független az alkalmazott adatbáziskezelőtől.
Az Enterprise JavaBeans
EJB / 18
A perzisztencia biztosí biztosítása (folyt.) Bean-Managed Persistence (BMP) A bean állapotát a bean osztály adattagjai határozzák meg A bean állapotának adatbázisba mentése a bean feladata, tehát tartalmaz adatbázis kezelő kódot.
EJB / 19
Az Enterprise JavaBeans
Az entity beanbean-ek haszná használata A bean az üzleti logika egy elemét reprezentálja, nem eljárást vagy folyamatot. A bean állapota perzisztens kell legyen. A bean állapota az alkalmazás befejeződése vagy a J2EE szerver leállása után is meg kell hogy maradjon.
EJB / 20
Az Enterprise JavaBeans
Egy entity bean életciklusa Kliens hívja Konténer hívja
Az Enterprise JavaBeans
EJB / 21
EJB interfaceinterface-ek
EJB / 22
Az Enterprise JavaBeans
A remote interface és implementá implementáció ciója A remote interface-t implementáló EJBObject osztályt a fejlesztő eszköz generálja Feladata, hogy a konténer kezelés különbözőségeit elrejtse A fejlesztő feladata csak az üzleti metódusokat definiáló interface és az azt implementáló EJB osztály megírása.
EJB / 23
Az Enterprise JavaBeans
EJB objektum hí hívása EJB konténer Kliens
Fejlesztő írja
EJB Konténer szolgáltatások
Remote interfész EJB Object
Generálódik Az Enterprise JavaBeans
EJB / 24
A home interface Az EJB életciklus metódusait definiálja Segítségével szerezhető meg a remote interface referenciája Szerepe EJB "factory" Már létező EJB megkeresése
Ennek az implementációja is generálódik.
Az Enterprise JavaBeans
EJB / 25
A home interface: interface: pé példa public interfaceTestEJBHome extends EJBHome { public TestEJB create(String parameter1, String parameter2) throws RemoteException, CreateException; public TestEJB findByPrimaryKey(TestEJBKey parameter1) throws RemoteException, FinderException; } Az Enterprise JavaBeans
EJB / 26
Az EJB osztá osztály Implementálnia kell a megfelelő bean interface-t és az üzleti metódusokat, amelyeket a remote interface definiál. Session Bean: public class TestBean implements SessionBean { . . . } Entity Bean: public class TestBean implements EntityBean { . . . } Az Enterprise JavaBeans
EJB / 27
Az EJB osztá osztály (folyt.) Implementálni kell a callback metódusokat is (még azt is, aminek a törzse üres).
Az Enterprise JavaBeans
EJB / 28
Irodalom The J2EE Tutorial Enterprise JavaBeans Technology Fundamentals Short Course Braun Tamás: Internet banki alkalmazás fejlesztése J2EE technológiával és az IBM Websphere alkalmazás szerverrel Diplomaterv, Általános Informatikai Tanszék, Miskolc, 2002.
Az Enterprise JavaBeans
EJB / 29