Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA Zbyněk Šlajchrt Část 13.

Podobné prezentace


Prezentace na téma: "VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA Zbyněk Šlajchrt Část 13."— Transkript prezentace:

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


Stáhnout ppt "VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA Zbyněk Šlajchrt Část 13."

Podobné prezentace


Reklamy Google