+ All Categories
Home > Documents > VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Date post: 19-Feb-2016
Category:
Upload: nanda
View: 37 times
Download: 2 times
Share this document with a friend
Description:
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA. Zbyněk Šlajchrt http://java.vse.cz/4it447/HomePage. Část 13. Další features WebBeans. Interceptory podobné interceptorům v EJB3 Dekorátory jako interceptory, ale obalují konkrétní třídu Události - PowerPoint PPT Presentation
29
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA Zbyněk Šlajchrt http://java.vse.cz/4it447/HomePage Část 13.
Transcript
Page 1: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKAZbyněk Šlajchrt http://java.vse.cz/4it447/HomePageČást 13.

Page 2: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 3: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 4: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 5: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 6: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Ukázka třídy interceptoru6

Page 7: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 8: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Aktivace interceptorů Standardně jsou všechny interceptory

neaktivní Každý interceptor je třeba explicitně

aktivovat v souboru beans.xml v sekci <interceptors>

8

Page 9: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 10: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 11: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Příklad třídy dekorátoru11

Dekorované jsou všechny beany, které implementuji ILogin (@Any)

Page 12: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Aktivace dekorátorů Standardně jsou všechny interceptory

neaktivní Každý interceptor je třeba explicitně

aktivovat v souboru beans.xml v sekci <decorators>

12

Page 13: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 14: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Typ události Objekt události je instancí bez-

parametrové třídy - typu události

14

Page 15: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 16: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 17: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 18: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Příjem kvalifikované události Parametr observer metody je dodatečně

anotován kvalifikátorem

18

Page 19: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 20: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 21: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Ukázka transakční observer metody

21

Tato metoda se zavolá pouze v případě, že distribuce událostiproběhla bez chyby.

Page 22: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 23: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Příklad alternativy Alternativní bean musí být anotován

@javax.enterprise.inject.Alternative

23

Page 24: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 25: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Stereotyp - příklad25

Page 26: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 27: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

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

Page 28: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Zdroje http://java.sun.com/javaee/6/docs/tutoria

l JSR-299: Contexts and Dependency

Injection for the Java EE platform

28

Page 29: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Konec29

Děkuji za pozornost


Recommended