Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilKateřina Konečná
1
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA Zbyněk Šlajchrt http://java.vse.cz/4it447/HomePage Část 13.
2
Další features WebBeans Interceptory podobné interceptorům v EJB3 Dekorátory jako interceptory, ale obalují konkrétní třídu Události lze posílat notifikace o událostech posluchačům Alternativy konfigurace alternativních implementací beanů Stereotypy Svazková anotace kvalifikátorů a ostatních anotací 2
3
Interceptory Blízcí příbuzní interceptorům z EJB3 Umožňují programovat "cross-cutting concerns" logování profilování transakce bezpečnost ... WebBeans umožňuji asociovat typově bezpečně interceptory s beany Prostřednictvím "custom" anotací (viz kvalifikátory) 3
4
Interceptor Binding Type (IBT) Javovská anotace, pomocí které se asociuje interceptor a bean IBT anotace je opatřena meta-anotacemi @Inherited – anotace je děděna @InterceptorBinding – identifikace IBT anotace 4
5
Třída interceptoru Třída interceptoru se anotuje @javax.interceptor.Interceptor 'custom' IBT anotace - v našem případě @Log Pro metody platí stejná pravidla, jako pro standardní EJB interceptory (viz 5. přednáška) AroundInvoke inteceptory Life-cycle interceptory 5
6
Ukázka třídy interceptoru 6
7
Asociování s beanem Asociování interceptoru s beanem se provádí anotací metody nebo celého beanu příslušné IBT (custom) anotace 7
8
Aktivace interceptorů Standardně jsou všechny interceptory neaktivní Každý interceptor je třeba explicitně aktivovat v souboru beans.xml v sekci 8
9
Dekorátory Dekorátory implementují jeden nebo více typů beanů (bean types) Odchytávají volání business metod implementovaných dekorovanými typy beanů Podobná koncepce jako interceptory logika dekorátorů není cross-cutting stává se součástí business logiky dekorovaných typů Lze je nasadit na managed beany a EJB nikoliv na jiné dekorátory či interceptory Dekorátor je managed bean 9
10
Deklarace dekorátoru Třída dekorátoru se anotuje @javax.decorator.Decorator Každá třída dekorátoru musí mít tzv. delegate injection point Anotovaný @Delegate + kvalifikátory atp. Lze nahlížet jako na standardní injektovaný atribut Dekorátor dekoruje každý bean, který vyhovuje anotacím na atributu delegáta 10
11
Příklad třídy dekorátoru 11 Dekorované jsou všechny beany, které implementuji ILogin (@Any)
12
Aktivace dekorátorů Standardně jsou všechny interceptory neaktivní Každý interceptor je třeba explicitně aktivovat v souboru beans.xml v sekci 12
13
Události Beany mohou vyrábět a konzumovat události Snižuje se tak provázanost mezi beany (coupling) Není nutná compile-time závislost mezi komunikujícími beany Usnadňuje komunikaci mezi různými vrstvami aplikace Stavový bean vysílá událost o změně stavu, která je přijata managed beanem ve webové vrstvě 13
14
Typ události Objekt události je instancí bez-parametrové třídy - typu události 14
15
Generování událostí Třída beanu deklaruje atribut typu javax.enterprise.event.Event Parametrem tohoto generického rozhraní je typ události Atribut se deklaruje pro injektáž Událost se vyšle volání metody fire na atributu 15
16
Příjem události Události se přijímají v tzv. observer metodách Tyto metody mají právě jeden parametr, který odpovídá typu události Tento parametr musí být anotován @javax.enterprise.event.Observes 16
17
Kvalifikátor události Při deklaraci události lze uvádět kvalifikátor(y) události "custom" anotace, která může obsahovat atributy Deklarace události je doplněna o kvalifikátor 17
18
Příjem kvalifikované události Parametr observer metody je dodatečně anotován kvalifikátorem 18
19
Dynamická volba kvalifikátoru Kvalifikátor lze události přiřadit až za běhu Vytvoří se třída, která implementuje rozhraní anotace kvalifikátoru Při odesílání události se vytvoří instance této třídy a předá se metodě select v rozhraní Event Metody select(...) slouží k dolaďování události 19 // javax.enterprise.util.AnnotationLiteral
20
Transakční observer metody Bean může být notifikován v různých fázích notifikační transakce, tj. rozesílání události příjemcům Identifikátor fáze se zadá do atributu during anotace @Observes javax.enterprise.event.TransactionPhase BEFORE_COMPLETION AFTER_COMPLETION AFTER_FAILURE AFTER_SUCCESS IN_PROGRESS 20
21
Ukázka transakční observer metody 21 Tato metoda se zavolá pouze v případě, že distribuce události proběhla bez chyby.
22
Alternativy Alternativy jsou beany, kterými lze nahradit standardní beany během řešení závislostí. Pokud vzniká nejednoznačnost v závislostech, řeší se tak, že se ze všech kandidátů vyloučí beany, které nejsou alternativy. Pokud zbude jediný bean-alternativa, použije se pro uspokojení závislosti. Jinak chyba deploymentu. Alternativy se musí aktivovat v beans.xml; podobně jako interceptory a dekorátory. 22
23
Příklad alternativy Alternativní bean musí být anotován @javax.enterprise.inject.Alternative 23
24
Stereotypy Stereotyp zachycuje často se vyskytující svazek anotací Tento svazek je deklarován jako další anotace Anotace ve svazku jsou obvykle Scope anotace (@SessionScoped atp.) @Named @Alternative Interceptor binding anotace Anotaci ve stereotypu lze překrýt explicitním uvedením příslušné anotace na třídě či jiném prvku 24
25
Stereotyp - příklad 25
26
Vestavěné stereotypy @javax.enterprise.inject.Model Označuje bean z modelu v MVC frameworku, jako např. JSF. Bean označený touto anotací je pojmenovaný, tj. lze jej odkazovat z EL je umístěn v Request scope 26
27
Poznámky Aplikace musí vždy obsahovat beans.xml v adresáři WEB-INF Pokud bean patří do pasivovatelného scope (např. @SessionScoped), interceptor i dekorátor musí být stejně jako bean pasivovatelný (stačí serializovatelný) Chyby Interceptory nefungují v EAR, pouze ve WAR Dekorátory nefungují vůbec 27
28
Zdroje http://java.sun.com/javaee/6/docs/tutorial http://java.sun.com/javaee/6/docs/tutorial JSR-299: Contexts and Dependency Injection for the Java EE platform 28
29
Konec 29 Děkuji za pozornost
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.