6. rész: EJB-k tervezése és implementálása

Hasonló dokumentumok
5. rész: A Java EE és az Enterprise Bean réteg. Bakay Árpád dr. NETvisor kft (30)

Adatkezelés. 11. előadás (Entity Beans)

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Enterprise JavaBeans 1.4 platform (EJB 2.0)

7. rész: A specifikációtól az implementációig az EJB rétegben

S04-2 Elosztott alkalmazások készítése

A Java Persistence API PersistenceAPI / 3

Tartalom. Az EJB 2.1 problémái Az EJB 3 megoldásai

8. rész: Implementáció JDeveloperben

A Java EE 5 plattform

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Perzisztencia. ANTAL Margit. Sapientia - EMTE. ANTAL Margit Java technológiák 11. előadás Perzisztencia

JPA támogatás Eclipse-ben

Biztonság java web alkalmazásokban

Enterprise Java Beans. EJB - Általános bevezető

Stateless Session Bean

Üdvözli Önöket A PGY3 tantárgy! Bakay Árpád dr. NETvisor kft (30) arpad.bakay@netvisor.hu

JEE tutorial. Zsíros Levente, 2012

EJB - Perzisztencia. EntityManager

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

JAVA webes alkalmazások

4. rész: Java Enterprise Edition bevezetı. Bakay Árpád dr. NETvisor kft (30)

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

A Web réteg architektúrája A JSF web alkalmazás keretrendszer. Bakay Árpád dr. NETvisor kft (30)

Tranzakció-kezelés, alapfogalmak. Vassányi István, 2012.

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

Adatmodellezés, alapfogalmak. Vassányi István

Junior Java Képzés. Tematika

Szoftver-technológia II. Tervezési minták. Irodalom. Szoftver-technológia II.

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

LBRA6i integrált rendszer

C#, OOP. Osztályok tervezése C#-ban

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István Viczián István

Csomag. Adatbázis-objektum Programozási eszközök gyűjteménye Két részből áll. specifikáció törzs (opcionális)

Kliens oldali SQL-API

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Reaktív programozás szerver oldalon

Segédanyag: Java alkalmazások gyakorlat

Kommunikáció. Folyamatok közötti kommunikáció. Minden elosztott rendszer alapja

Debreceni Egyetem Informatikai Kar JAVA ENTERPRISE COMPUTING

10. Gyakorlat: Alkalmazások publikálása Remote Desktop Szervízen keresztül

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Imperatív programozás

Bevezetés a Seam keretrendszer használatába

Adatbázisok webalkalmazásokban

Segédanyag: Java alkalmazások gyakorlat

Tranzakciókezelés PL/SQL-ben

Bevezetés a Python programozási nyelvbe

Adatbázis rendszerek I

discosnp demo - Peterlongo Pierre 1 DISCOSNP++: Live demo

Interaktív, grafikus környezet. Magasszintû alkalmazási nyelv (KAL) Integrált grafikus interface könyvtár. Intelligens kapcsolat más szoftverekkel

Komponensek együttműködése web-alkalmazás környezetben. Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Szolgáltatási szint és performancia menedzsment a PerformanceVisor alkalmazással. HOUG konferencia, 2007 április 19.

Data Integrátorok a gyakorlatban Oracle DI vs. Pentaho DI Fekszi Csaba Ügyvezető Vinnai Péter Adattárház fejlesztő február 20.

Web-fejlesztés NGM_IN002_1

Delegátumok C#-ban Krizsán Zoltán iit

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

Objektumok inicializálása

Programozási nyelvek Java

eseményvezérelt megoldások Vizuális programozás 5. előadás

Szoftvertechnolo gia gyakorlat

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Szakdolgozat. Kovács Lilla

Szoftvertechnolo gia 7. gyakorlat

Széchenyi István Egyetem

Vizuális adatelemzés - Gyakorlat. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Komponens alapú fejlesztés. Szoftvertechnológia elıadás

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

ROS Remote Operations Service

Objektumorientált programozás C# nyelven

Adatbázisok elleni fenyegetések rendszerezése. Fleiner Rita BMF/NIK Robothadviselés 2009

Bevezető. Servlet alapgondolatok

Collections. Összetett adatstruktúrák

EPC e-payment Task Force tag MSE e-fizetések munkacsoport vezetı

Alternatív adatbázisok Gráfadatbázisok

webalkalmazások fejlesztése elosztott alapon

Webes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (ASP.NET)

Statisztikai szoftverek Molnár Gábor József

Google Web Toolkit. Elek Márton. Drótposta kft.

OOP #14 (referencia-elv)

Adatmodellezés. 1. Fogalmi modell

SQL Server High Availability

OpenBSD hálózat és NAT64. Répás Sándor

Mérési útmutató a Secure Shell (SSH) controll és audit című méréshez

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Abstract osztályok és interface-ek. 7-dik gyakorlat

A legalacsonyabb szintű tesztelés. A programot felépítő egységek tesztelése Unit: egy rendszer legkisebb önálló egységként tesztlehető része.

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Átírás:

6. rész: EJB-k tervezése és implementálása Bakay Árpád NETvisor kft (30) 385 1711 arpad.bakay@netvisor.hu A tananyag készült az ELTE-IKKK projekt támogatásával

Tartalom Session EJB-k - folyt Tranzakciók és biztonság Entity EJB-k

A Session EJB-k -- ügyintézı ablakok hasonlat Stateless: Minden szükséges irat mindig nálam van, tehát bármelyik ablakhoz mehetek, sıt, több különbözı helyszínen is intézhetem a dolgaimat Stateful: Otthagyom a iratokat, de ha rövid idın belül visszamegyek, még ugyanannál az ablaknál megtalálom a papírokat. Ha késıbb megyek, akkor már akármelyik kisasszonyhoz mehetek, ı lesöpri az asztalát, és hátulrıl elıhozza a dossziémat. DE: Ha leég az az iroda, kezdhetem elılrıl egy másik helyszínen! Kivéve, ha elektronikus papírkezelés lenne ez a session failover

Session EJB általános vonások A Session EJB a kliens távoli megbízottja Egy bean handle csak egy klienshez tartozik De lehet hogy több klienst szolgál ki egy vagy több valódi bean instance Bármely bean remote (RMI) és/vagy lokális interfészekkel készülhet el.

Stateless Session bean Nincsen klienshez kötött lokális állapota Életciklusáról a container gondoskodik Pl. a kérések gyakorisága alapján növeli vagy csökkenti a bean-ek számát. Multiplexálás egyszerő A leghamarabb felszabaduló instance szolgálja ki Akár több több között is load balance-olhatunk ha a JNDI intelligensen szolgálja ki a lookup-okat Gyors, mert nem kell state adatokat elıkotorni VISZONT: minden szükséges adatot át kell adni paraméterként minden hívásnál

Stateless EJB Életciklusa Does not exist Create method EJB 3.0 dependency injection Callbacks, if defined: @PostConstruct @PreDestroy any method call from any client or timer callback Ready

Stateless bean amit a kliens lát Példa EJB: Szotar.class Kliens kód: class SzotarClient { @EJB Szotar sz; // dependency injection void fordit(void) { System.out.println(sz.angolMagyar("experience")); System.out.println(sz.magyarAngol("botrányos")); // lehet, hogy másodjára sz már egy másik bean instance volt! } }

Stateful Bean - különbségek Míg az SL-EJB esetében a referencia mögött az EJB instance gond nélkül cserélhetı (így történik a pooling) itt már a containernek gondoskodni kell az állapot áttelepítésérıl is: save to cache amikor felszabadítja az eddig használt instance-et restore from cache amikor újra hívja a kliens a kirakott bean-t

Stateful EJB életciklusa Does not exist Callbacks, if defined: @PostConstruct @Predestroy create method dependency injection @Remove method call or timeout timeout selected by container non-trx method call Ready call on any method Passive transaction method call transactional method call Ready, in transaction TX commit/abort Callbacks, if defined: @PrePassivate @PostActivate

Stateful bean client view Példa EJB: Calculator.class Kliens kód: class CalcClient { @EJB Calculator calc; // dependency injection void kiszamol(void) { calc.turnon() calc.add(5); calc.add(12); calc.multiply(3); System.out.println(calc.read()); // 51 calc.turnoff(); // @remove annotated method // illik meghívni, különben a timeoutra kell várni } }

EJB tranzakciók és biztonság

Tranzakciók kívánatos tulajdonságai ACID Atomicitás Mindet vagy semmit végrehajt Consistency Az adatbázis a mővelet után a constrainteknek megfelel Isolation Párhuzamos tranzakciók nem érzékelik egymást Durability A változások tényleg maradandók

Tranzakciós kontextus Egy, a tranzakciót azonosító token, amely a hívások láncolátával párhuzamosan az ú.n. EJBContext-ben terjed Egészen a klienstıl indulhat Az egyes metódusok jelezhetik, hogy milyen tranzakciós környezetben szeretnek futni @TransactionAttribute(xxx) method annotation MANDATORY REQUIRED REQUIRES_NEW SUPPORTS NOT_SUPPORTED NEVER - kell, hogy már legyen tx - csinál, ha eddig nem volt - mindenképpen újat csinál - ha van tx, használja - nem használja - csak tx nélkül szabad hívni

Biztonsági kontextus A mőveletet kezdeményezı user azonosítója (principal) a tranzakciós kontextushoz hasonlóan, az EJBContext-ben terjed Használata: Programból: EJBContext objektumon EJBContext.getCallerPrincipal() EJBContext.isCallerInRole ( adminisztrátor ) Deklaratíven: metadata annotation @DeclareRoles( payroll ) @Stateful class FizetesBean { }

3. EJB Entity-k

Objektum-relációs leképezés OO RDBMS A B B B B TableA TableB A A szoftvertervezés és fejlesztés bevált szemlélete Az adattárolás legmegbízhatóbb skálázhatóbb módja

EJB Entity-k Elsıdleges céljuk az objekt-relációs leképezés Kevés (vagy inkább semmi) üzleti logikát tartalmaznak Jellemzıen minden column-ra egy property A PK-t @ID jelzi Lehet automatikusan generált: @ID(generate=AUTO) A többi oszlop attr @basic - de ez a default Nem illeszkedı nevek: @column annotation @column(name = TEL_NO ) gettelephone()

Entity Bean: relációk 4 típus: OneToOne OneToMany ManyToOne - ManyToMany -- kapcsolótábla kell a DB-ben Adattípus *Many estén: valamilyen collection List, Set, Collection bármelyiket tudja kezelni, generálásnál választható Bidirectional relations Oda és vissza irány az FK->PK irány alapján!!! A visszafelé oldalon a mappedby attribútum jelzi, hogy melyik az oda-irány

Az EntityManager Az EJB 2.0 az Entity életciklusa az Entity-nek küldött üzeneteken keresztül változott. Az EJB 3.0-ben új EM szolgáltatás használata egyszerőbb és futásban hatékonyabb Az EM egy intelligens replikátor, ami vezérli az O/R mappinget, Egyetlen EM egyszerre több különbözı típusra, ill. példányra is Entity Java object EntityManager Tábla

EM folyt Leggyakrabban a Session bean minden metódus elején nyit egy tiszta EM-et, és az összes objektumot ezzel kezeli, majd a hívás végén öblít az EM (ez a default, transaction scoped EM ) EM kreálása a 3.0-ban: dependency injection @PersistenceContext EntityManager em;

Kitérı: Dependency Injection Az EJB 3.0 új, automatikus inicializálási technikája - annotációk jelzik a konténernek, hogy hova mit kell injektálni, amikor egy példányt kreál - JNDI-bıl dolgozik - a default akció jellemzıen megfelel, de speciális igényekhez az annotációk paraméterezhetık - példa (példányváltozó egy session EJB-ben): @PersistenceContext EntityManager em; v.ö. A JNDI hagományos használata: EntityManager em; public void initem(sessioncontext ctx) { em = (EntityManager)ctx.lookup( MyEM ); }

Az Entity életciklusa NON-EXISTENT new() NEW em.persist(obj) em.refresh(o) EM ACTIVE STATES em.clear() em.clear() em.close() DETACHED MANAGED em.find(class, PK) DB-ONLY em.remove(obj) em.persist(obj) em.merge(obj) REMOVED

Megjegyzések az életciklus ábrához A MANAGED és REMOVED entity-k DB képe csak em.flush(), ill. transaction commit után garantált. A leggyakoribb u.n. transaction scoped EM-eknél a tr. végeztével az EM bezárul, és minden entity DETACHED lesz. Az Extended EM-nél maradnak bent. A relációk követése a CASCADE= annotation értéke szerint ALL, PERSIST, MERGE, REFRESH, REMOVE

4. Egyebek

EJB verziók és más komponens technológiák Az EJB 2.1 nehézsúlyú koponensek technológiája. A Bean class-ok kötelezıen leszármazotjai egy, a contianer által biztosított osztálynak Az Entity perzisztenicia egyszerően használható, de lassú Sok repetitív kódolás, pl. bean - remote interfész - local interfész EJB 3.0: forradalmi változtatás, jelentıs könnyítések Bean-ek POJO-k, és akár container nélkül is használhatók/tesztelhetık Megváltozott perzisztencia technológia, kevesebb kód, stb. Érdekes egyéb containerek Spring Framework, PicoContainer, stb. Még könnyebb súlyúak Kevésbé elterjedtek és csak 1-1 szoftver támogatja

Köszönöm a figyelmet!