Скачать презентацию Web Bean JBoss Seam — Apache Shale Скачать презентацию Web Bean JBoss Seam — Apache Shale

c5027f64f7cffb73d4c129026193844f.ppt

  • Количество слайдов: 50

Web Bean JBoss Seam - Apache Shale Web Bean JBoss Seam - Apache Shale

EJB architektúra • Komponens alapú üzleti alkalmazások fejlesztése • Programozási modell • Tranzakciókat használó EJB architektúra • Komponens alapú üzleti alkalmazások fejlesztése • Programozási modell • Tranzakciókat használó erőforrások elosztása

Áttekintés • Enterprise Java. Beans – Stabil – Skálázható – Tranzakció menedzsment – Sok-felhasználós Áttekintés • Enterprise Java. Beans – Stabil – Skálázható – Tranzakció menedzsment – Sok-felhasználós – Biztonságos • EJB 3. 0 – Javított, egyszerűsített EJB modell – Könnyű használhatóság – Java annotációk!!!

Hiányosságok • Az EJB komponensek nem látják a webes réteg request, session és application Hiányosságok • Az EJB komponensek nem látják a webes réteg request, session és application kontextus állapotait, így nem is férnek hozzá azokhoz • EJB komponenseket nem lehet általánosan használni a megjelenítési rétegben • Nincs komponens vagy függvény szintű biztonságkezelés • JSF-ben nincs integrálva tranzakcióban használt erőforrások elérése • A servlet specifikáció – amit a JSF használ – nem elég gazdag komplex alkalmazásokban való használathoz • JSF még nem használható annotációkkal

Megoldás • Web Beans • JSR-299 specifikáció • Egyesíti a JSF Managed Bean komponens Megoldás • Web Beans • JSR-299 specifikáció • Egyesíti a JSF Managed Bean komponens modellt az EJB komponens modellel • Egyszerűsített programozási modellt ad web alapú alkalmazások fejlesztéséhez • Nincs szükség a Java EE környezet mély ismeretére • Javított kontextus modell

Web Beans céljai • EJB komponensek JSF Bean-ekként való használatának támogatása • Annotációk használata Web Beans céljai • EJB komponensek JSF Bean-ekként való használatának támogatása • Annotációk használata a kontextusok változóinak manipulálására • Javított kontextus modell + két új kontextus: – Conversation – Business Process • • Interfész munkafolyamat-motorok könnyű integrálásához JPA integrálása Annotációk biztosítása JSF metaadatok számára JSR-227 támogatás biztosítása

Adaptálás meglévő rendszerekhez • Létező EJB 3 session bean-ekből Web Bean-ek készítése annotációkkal • Adaptálás meglévő rendszerekhez • Létező EJB 3 session bean-ekből Web Bean-ek készítése annotációkkal • Létező JSF managed bean-ekből Web Bean-ek készítése annotációkkal • Új Web Bean komponensekbe meglevő EJB 3 session bean-ek injektálása annotációval vagy JNDI-ből • Új EJB-ben létező Web Bean komponensek használata injektálással vagy interceptorral

Web Beans újdonságai • A Web Beans lényege a laza csatolás – Szerver és Web Beans újdonságai • A Web Beans lényege a laza csatolás – Szerver és kliens oldal elválasztása jól definiált API-k és kötési típusok alkalmazásával • Az implementáció felüldefiniálható telepítési időben – Az együttműködő komponensek életciklusainak elkülönítése • Komponensek életciklusának automatikus menedzsmentje • Stateful komponensek szolgáltatásokként való használata – Ortogonális nézetek leválasztása a programkódtól • Interceptorok használata (logging, security, transactions) – Az üzenetek küldőinek és fogadóinak szétválasztása • Event-ke használata • A Web Beans egyesíti a web réteget és az üzleti réteget – Egy komponens elérheti a request scope adatait és használhat tranzakciós erőforrást is egyben

Mi egy Web Bean? • Komponens típusai: – Bármilyen Java osztály – EJB session Mi egy Web Bean? • Komponens típusai: – Bármilyen Java osztály – EJB session és singleton bean-ek – Feloldó metódusok – JMS komponensek – Távoli komponensek • Alap építőelemek: – – – Telepítési típusok API típusok Kötési típusok Elnevezések Implementálások

Egy egyszerű példa: Komponens @Component egy beépített stereotípus public @Component class Hello { public Egy egyszerű példa: Komponens @Component egy beépített stereotípus public @Component class Hello { public String hello(String name) { return "hello " + name; } }

Egy egyszerű példa: Kliens @Current egy beépített kötési típus public @Component class Printer { Egy egyszerű példa: Kliens @Current egy beépített kötési típus public @Component class Printer { @Current Hello hello; public void hello() { System. out. println(hello("world")); } }

Egy egyszerű példa: Konstruktor injektálás A konstruktorok paraméterei default injektálódnak public @Component class Printer Egy egyszerű példa: Konstruktor injektálás A konstruktorok paraméterei default injektálódnak public @Component class Printer { private Hello hello; public Printer(Hello hello) {this. hello=hello; } public void hello() { System. out. println(hello("world")); } }

Egy egyszerű példa: Initializer használata Példányosítás utáni callback a paraméterek injektálására public @Component class Egy egyszerű példa: Initializer használata Példányosítás utáni callback a paraméterek injektálására public @Component class Printer { private Hello hello; @Initializer void init. Printer(Hello hello) {this. hello=hello; } public void hello() { System. out. println(hello("world")); } }

Komponensek nevei Alapértelmezetten a komponensek nem elérhetőek EL kifejezésekben. Ha nem adunk meg nevet, Komponensek nevei Alapértelmezetten a komponensek nem elérhetőek EL kifejezésekben. Ha nem adunk meg nevet, egy default név rendelődik hozzá public @Component @Named("hello") class Hello { public String hello(String name) { return "hello " + name; } }

JSF oldalak Web Bean metódus hívása EL kifejezéssel <h: command. Button value= JSF oldalak Web Bean metódus hívása EL kifejezéssel

Kötési típusok • A kötési típus egy annotáció, amely lehetővé teszi a kliens számára, Kötési típusok • A kötési típus egy annotáció, amely lehetővé teszi a kliens számára, hogy több implementáció közül választhasson egy APIból futási időben – String alapú nevek használata feloldásnál – @Current az alapértelmezett kötési típus

Kötési típus definiálása és használata public @Binding. Type @Retention(RUNTIME) @Target({TYPE, METHOD, FIELD, PARAMETER}) @interface Kötési típus definiálása és használata public @Binding. Type @Retention(RUNTIME) @Target({TYPE, METHOD, FIELD, PARAMETER}) @interface Casual {} A Hello komponens injektálása és a @Casual implementáció elkérése A @Casual kötési típus specifikálása public @Casual @Component class Hi extends Hello { public String hello(String name){ return "hi " + name; } } public @Component class Printer { @Casual Hello hello; public void hello(){ System. out. println( hello("JBoss Compass") ); } }

Telepítési típusok • A telepítési típus egy annotáció, amely Web Bean -ként azonosít egy Telepítési típusok • A telepítési típus egy annotáció, amely Web Bean -ként azonosít egy osztályt – Telepítési típusok engedélyezhetőek és tilthatóak, ezzel biztosítva komponensek egész csoportjainak engedélyezését és tiltását telepítési időben – Van egy precedencia sorrendje a telepítési típusoknak, így segítve a futtatási környezetet, hogy különböző implementációk között választhasson egy API-ból – A telepítési típusok lecserélik az XML alapú konfigurációkat • Az alapértelmezett telepítési típus: Production

Telepítési típus definiálása, használata public @Deployment. Type @Retention(RUNTIME) @Target({TYPE, METHOD}) @interface Espanol {} A Telepítési típus definiálása, használata public @Deployment. Type @Retention(RUNTIME) @Target({TYPE, METHOD}) @interface Espanol {} A felsorolás sorrendje fontos! Csak az itt felsorol telepítési típusok lesznek elérhetőek az alkalmazásban Ugyanaz az API, különböző implementáció public @Espanol @Component class Hola extends Hello { public String hello(String name){ return "hola " + name; } } javax. webbeans. Standard javax. webbeans. Production org. jboss. i 18 n. Espanol

Hatókörök és kontextusok • A hatókörök meghatározzák egy Web Bean példányainak életciklusát • Összekapcsolják Hatókörök és kontextusok • A hatókörök meghatározzák egy Web Bean példányainak életciklusát • Összekapcsolják a klienst, és az adott klienshez tartozó példányokat • Bővíthető kontextus modell, új annotációk készítésével • Beépített hatókörök: – – @Request. Scoped @Session. Scoped @Application. Scoped @Conversation. Scoped

A conversation hatókör • Hasonló a session hatókörhöz, állapotokat tart és rendel felhasználókhoz a A conversation hatókör • Hasonló a session hatókörhöz, állapotokat tart és rendel felhasználókhoz a rendszerben több request-en keresztül a következő két különbséggel: – A életciklusának határait az alkalmazás kezeli – Az állapotot egy adott böngészőhöz rendeli • Egy conversation egy feladatot reprezentál a felhasználó szemszögéből, több feladat esetén több conversation keletkezik • A conversation hatókör minden JSF request esetén aktív és legtöbb esetben a request végén véget is ér. Több requesten keresztül tartó conversation-t hosszú futású (long-running) conversation-nek nevezzük.

Függő pseudo-scope • A négy beépített hatókör mellett a Web Bean specifikál egy default Függő pseudo-scope • A négy beépített hatókör mellett a Web Bean specifikál egy default hatókört: @Dependent • Minden Web Bean, amely nem definiálja a hatókörét, ebbe a hatókörbe sorolandó • Egy függő Web Bean-re való hivatkozás (injektálás) esetén mindig létrejön egy példány a függő bean-ből, valahányszor az injektáló példányosítva van • A függő Web Bean-ek példányai sosem lesznek megosztva komponensek között, egy ilyen példány a példányosító Web Bean-től „függ” • Az életciklusa is tőle függ, akkor lesz megszüntetve, amikor a példányosító megszűnik

Producer metódusok • A Producer metódusok segítenek a komponensek példányosításának kezelésében: – Polimorfizmus futási Producer metódusok • A Producer metódusok segítenek a komponensek példányosításának kezelésében: – Polimorfizmus futási időben – Példányosítás kezelése – Injektálás kezelése nem Web Bean komponensekre vonatkozóan

Interceptor-ok • Az EJB 3. 0 interceptor arhitektúra felhasználása a következőkkel kibővítve: – Minden Interceptor-ok • Az EJB 3. 0 interceptor arhitektúra felhasználása a következőkkel kibővítve: – Minden Web Bean-nek lehet interceptora, nem csak session bean-eknek – Kifinomultabb létrehozása a kötéseknek a Web Beanek és az interceptorok között annotációkkal • Két típusa van: – Függvényhíváshoz rendelt interceptorok – Komponensek életciklusaihoz rendelt interceptorok

Sztereotípusok • Gyakran visszatérő, használandó arhitektúra minták, amelyek úgynevezett Web Bean szerepköröket definiálnak • Sztereotípusok • Gyakran visszatérő, használandó arhitektúra minták, amelyek úgynevezett Web Bean szerepköröket definiálnak • Magába foglalja a következőket vagy azok kombinációit: – alapértelmezett telepítési típus – alapértelmezett hatókör – megszorítások a hatókörre – követlemények, amiket a Web Bean-nek meg kell valósítania – Interceptorok megadása

Események • Teljes elkülönül az eseményt generáló („producer”) és eseményt feldolgozó („observer”) • Observer/observable Események • Teljes elkülönül az eseményt generáló („producer”) és eseményt feldolgozó („observer”) • Observer/observable minta felhasználása a következő különbségekkel: – Nem csak a producer van leválasztva az observer-től, hanem fordítva is függetlenek egymástól – Az observer-ek meghatározhatják az események egy jóldefiniált halmazát, amelyet kezelnek – Observer-ek azonnal feldolgozhatják az eseményt, vagy késleltethetik az épp aktív tranzakció végéig

JBoss Seam JBoss Seam

JBoss Seam • Alkalmazás keretrendszer, amely összeköti az EJB 3 -at és a JSF-et JBoss Seam • Alkalmazás keretrendszer, amely összeköti az EJB 3 -at és a JSF-et • További technológiák integrálása: – Ajax – BPM – PDF és MS Excel –… • Egyszerűsített web alkalmazás fejlesztés • Beépített komponensek

JBoss háttér • JBoss fejlesztés (Gavin King) • Minden más JBoss termékkel jól együtt JBoss háttér • JBoss fejlesztés (Gavin King) • Minden más JBoss termékkel jól együtt tud működni (j. BPM, Drools, stb. ) • Nem csak JBoss alkalmazás szerveren fut -> beépített EJB konténert tartalmaz • Jelenleg folyik a standardizálása: a Web Beans specifikáció alapja • JBoss OS (LGPL)

Or • sacrifice EJB support • All Seam features available • Security • Pageflow Or • sacrifice EJB support • All Seam features available • Security • Pageflow • Exception handling • Enhanced JSF Expression Language (JSFEL) Web container • Use embedded EJB 3 Java EE container J 2 EE container Futtatási környezetek • Use embedded EJB 3 Or • sacrifice EJB support

Arhitektúra SEAM Framework JDK 1. 5 or later JSF EJB 3 1. 1 1. Arhitektúra SEAM Framework JDK 1. 5 or later JSF EJB 3 1. 1 1. 2 EJB 3 Embedded EJB 3 Container

Tulajdonságai • • • Alapja POJO osztályok annotációkkal Facelet-ekre épül Nincsen szükség JSF managed Tulajdonságai • • • Alapja POJO osztályok annotációkkal Facelet-ekre épül Nincsen szükség JSF managed bean-ekre Nem szeparálja teljesen külön a rétegeket EJB metódusok hívása Ajax segítségével Beépített munkafolyamat motor (j. BMP) Interceptorok és Események kezelése Injection, Outjection Kód és Projekt generálás Két új kontextus: conversation, business process

JSF vs. Seam JSF Page POJO Facade Session EJB POJO Facade Entity EJB JSF JSF vs. Seam JSF Page POJO Facade Session EJB POJO Facade Entity EJB JSF Page Managed Bean JSF Page Session EJB SEAM JSF Page Entity EJB Automatically wrapped in Managed Bean

JSF életciklus JSF életciklus

Seam életciklus Seam életciklus

Példa: Entity Bean EJB Entity Bean Seam komponens @Name( Példa: Entity Bean EJB Entity Bean Seam komponens @Name("Product. Catalog") @Scope(Scope. Type. SESSION) @Entity @Table(name="catalog") public class Product. Catalog. Bean { @Id @Not. Null private long id; private String name; . . . @Data. Model(value="choice. Products") private List products;

Példa: Felhasználói felületek csatolásai @Datamodel. . . Pricelist #{Product. Catalog. name} <h: data. Table Példa: Felhasználói felületek csatolásai @Datamodel. . . Pricelist #{Product. Catalog. name} . . . Metódus hívása paraméterrel

Példa: Session Bean Seam komponens Injektálás @Name( Példa: Session Bean Seam komponens Injektálás @Name("Shop. Controller") @Scope(Scope. Type. SESSION) public class Shop. Controller { @In(create=true) private Shopping. Cart shopping. Cart; . . . public String select. Product(Product. Bean prod){ shopping. Cart. set. Product(prod); return "success"; }

Példa: Navigáció faces-config. xml vagy pages. xml • Navigációs szabályok • Init akciók használata Példa: Navigáció faces-config. xml vagy pages. xml • Navigációs szabályok • Init akciók használata navigálás előtt • Request paraméterek kezelése • EL kifejezések használata pageflow

JBoss Seam jövője • Seam 3 a Web Beans-re fog épülni teljesen – Web JBoss Seam jövője • Seam 3 a Web Beans-re fog épülni teljesen – Web Beans szolgáltatásai: • Összefüggő programozási modell és Esemény Bus • JSF és EJB 3 integrációja • JPA, tranzakciók és validációk integrálása – Seam feladatai: • • Biztonság BPM és Rule integráció (munkafolyamatok) PDF és levelezés JSF könyvtárak Minden mást…

Apache Shale Apache Shale

Apache Shale • • Modern web alkalmazás keretrendszer Alapja a Java Server Faces Lazán Apache Shale • • Modern web alkalmazás keretrendszer Alapja a Java Server Faces Lazán csatolt szolgáltatáscsomag Szabadon kombinálható elemek Hatékony eseménykezelés Új megjelenítési technológia: Clay Annotációk használata Több integrációs pontot biztosít – Spring – j. Mock –…

View Controller • Felhasználói felületek és a megjelenő adatok összerendelése, kezelése • Backing Bean-ek View Controller • Felhasználói felületek és a megjelenő adatok összerendelése, kezelése • Backing Bean-ek alapján • Implementálni kell a View. Controller interfészt – Postback property – Setter Injection – Init() – Preprocess() – Prerender() – Destroy()

Dialog Manager • Navigációs szabályok, folyamatok definiálása magas szinten – Action – metódus hívása Dialog Manager • Navigációs szabályok, folyamatok definiálása magas szinten – Action – metódus hívása – Exit – folyamat vége – Subdialog – beágyazott folyamat – View – JSF oldal megjelenítése • Felületek újrafelhasználhatósága célja

Application Manager • Request-ek kezelése • JSF Phase. Listener mintájára • Elő és utófeldolgozás Application Manager • Request-ek kezelése • JSF Phase. Listener mintájára • Elő és utófeldolgozás – Abstract. Req. Exp. Filter • JSF életciklus menedzsmentje – Shale. Application. Filter

Validáció • Apache Commons Validator • Kliens és szerver oldali validáció • Beépített típusok: Validáció • Apache Commons Validator • Kliens és szerver oldali validáció • Beépített típusok: – – Dátum E-mail URL. . . • 3 JSP tag a validáláshoz: – val: commons. Validator – val: validator. Var – val: validator. Script

Remoting • Javascript és Bean metódusok URL-re kötése Remoting • Javascript és Bean metódusok URL-re kötése

Clay • JSF esetén szerveroldalon fa alapú a felhasználói felület felépítése és tárolása • Clay • JSF esetén szerveroldalon fa alapú a felhasználói felület felépítése és tárolása • Ezt kiegészíti a Clay, hogy teljes részfákat lehessen mozgatni, beszúrni, törölni a felületből, így három lehetőséget biztosítva – HTML Views – Meta-data öröklődés – Szimbólumok

Tesztelés • JUnit tesztkeretrendszer • Hogyan lehet tesztelni egy konténerfüggő alkalmazást, mint amilyen minden Tesztelés • JUnit tesztkeretrendszer • Hogyan lehet tesztelni egy konténerfüggő alkalmazást, mint amilyen minden EE alkalmazás függetlenül? • Mock object API-khoz, így kiküszöbölve a függőségeket: – Shale – Servlet – JSF

VÉGE VÉGE