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 s az EJB kapcsolata Az Enterprise JavaBeans EJB / 3
Az EJB részeir 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 Az EJB részei r (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.) 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 ("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 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 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 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 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 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 s 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. Az Enterprise JavaBeans EJB / 23 EJB objektum hívásah Kliens 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 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: : példap 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
Az EJB 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