Enterprise JavaBeans Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Az Enterprise JavaBeans
Az Enterprise Javabeans Az Enterprise JavaBeans (EJB) server 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é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ő Az Enterprise JavaBeans EJB / 4
Interface-ek Az EJB részei (folyt.) 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.) Az Enterprise JavaBeans EJB / 5
Elnevezési konvenció Szokásos az alábbi elnevezési konvenció használata: Item Enterprise bean name EJB JAR display name Enterprise bean class Home interface Remote interface Local home interface Local interface Syntax <name>ejb <name>jar <name>bean <name>home <name> Local<name>Home Local<name> Example AccountEJB AccountJAR AccountBean AccountHome Account LocalAccountHome 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 Az Enterprise JavaBeans EJB / 7
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 Az Enterprise JavaBeans EJB / 8
Stateful session bean életciklusa Kliens hívja Konténer hívja 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 Az Enterprise JavaBeans EJB / 10
Stateless session bean életciklusa Kliens hívja Konténer hívja Az Enterprise JavaBeans EJB / 11
Session bean-ek ek 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á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á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í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í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í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í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. Az Enterprise JavaBeans EJB / 19
Az entity bean-ek ek 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. Az Enterprise JavaBeans EJB / 20
Egy entity bean életciklusa Kliens hívja Konténer hívja Az Enterprise JavaBeans EJB / 21
EJB interface-ek ek Az Enterprise JavaBeans EJB / 22
A remote interface és implementá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. Az Enterprise JavaBeans EJB / 23
Kliens EJB objektum hívása EJB konténer EJB Fejlesztő írja Remote interfész Konténer szolgáltatások EJB Object Generálódik Az Enterprise JavaBeans EJB / 24
A home interface Az ELB é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: 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á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
The J2EE Tutorial Irodalom 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 / 28