1 VVOJ PODNIKOVCH APLIKAC NA PLATFORM JAVA CVIEN

  • Slides: 17
Download presentation
1 VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - CVIČENÍ Část 9. Zbyněk Šlajchrt http:

1 VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - CVIČENÍ Část 9. Zbyněk Šlajchrt http: //java. vse. cz/4 it 447/Home. Page

Program 2 Diskuse nad domácím úkolem Aplikace Fotoalbum Verzování entit Využití inteceptoru pro synchronizaci

Program 2 Diskuse nad domácím úkolem Aplikace Fotoalbum Verzování entit Využití inteceptoru pro synchronizaci keše Využití REST služby pro ruční čištění keše

Úklid keše na základě verze 3 Umožňuje úklid pouze obstarožních ikon Zavedeme verzi do

Úklid keše na základě verze 3 Umožňuje úklid pouze obstarožních ikon Zavedeme verzi do entity Photo Nový atribut private int version; getter anotujeme @javax. persistence. Version JPA automaticky začne po každé modifikaci entity zvyšovat hodnotu v tomto poli Používáno také pro optimistické zamykání Pozn. : Pravděpodobně bude nutné odstranit tabulku PHOTO: DROP TABLE PHOTO

Úprava metody clean. Cache 4 Porovnává aktuální verze fotek s verzemi ikon v keši

Úprava metody clean. Cache 4 Porovnává aktuální verze fotek s verzemi ikon v keši Načte z DB entity všech fotek, které jsou v keši Obrázek V dotazu se využívá operátoru IN Zařídí se nenačítá, jelikož má fetch=LAZY výběr specifikovaných fotek. Ikony, jejichž verze je nižší než aktuální verze, jsou odstraněny z keše Ujistěte se, že Photo. Cache je anotován @Local. Bean

Využití interceptoru 5 K synchronizaci keše lze také využít interceptor Interceptor se nasadí na

Využití interceptoru 5 K synchronizaci keše lze také využít interceptor Interceptor se nasadí na všechny metody, které modifikují entitu Photo nebo mění jejich počet Výhoda: Odstínění služeb od problematiky kešování Metody na Album. DAOBean add. Photo(Photo photo) update. Photo(Photo photo) remove. Photos(int[] selected. Ids)

Cache. Synchronizer 6 V modulu ejb vytvořte třídu interceptoru Cache. Synchronizer Interceptor se řídí

Cache. Synchronizer 6 V modulu ejb vytvořte třídu interceptoru Cache. Synchronizer Interceptor se řídí následující konvencí ohledně hlaviček metod: add* – vytváří novou fotografii, která je v prvním parametru update* – aktualizuje fotografii, která je v prvním parametru remove* – odstraňuje fotografie, jejichž PK jsou v poli int[] předávaném jako první parametr bez parametrů – např. save(), musí se zavolat metoda na beanu, která vrátí ukládanou entitu

7 Konfigurace interceptoru na metodách Na všechny "create/update/delete" metody, které pracují s Photo, umístěte

7 Konfigurace interceptoru na metodách Na všechny "create/update/delete" metody, které pracují s Photo, umístěte anotaci @Interceptors(Cache. Synchronizer. class)

Poznámky 8 JBoss může mít problémy s používáním sekvence pro generování ID fotek. Pomůže

Poznámky 8 JBoss může mít problémy s používáním sekvence pro generování ID fotek. Pomůže explicitně určit sekvenci pomocí mapovacích anotací a sekvenci ručně vytvořit v databázi: @Sequence. Generator(name = "PHOTOSEQ", sequence. Name = "PHOTOSEQUENCE") použít na třídě Photo @Generated. Value(strategy = Generation. Type. SEQUENCE, generator = "PHOTOSEQ") použít na get. Photo() CREATE SEQUENCE PHOTOSEQUENCE AS BIGINT START WITH 300000

REST 9 Architektonický styl distribuovaných systémů REpresentational State Transfer Přenos reprezentace zdroje na klienta

REST 9 Architektonický styl distribuovaných systémů REpresentational State Transfer Přenos reprezentace zdroje na klienta Dotazem na zdroj identifikovaný URL nahraje klient reprezentační stav zdroje. Tento stav může obsahovat URL odkazy na další zdroje Dotazem na jiné URL přechází klient do dalšího stavu, který odpovídá reprezentaci odkazovaného zdroje. Dodatečná (post-hoc) interpretace HTTP

Příklady REST 10 http: //myapp/shop/products Zdrojem je zde seznam výrobků Reprezentací může být HTML,

Příklady REST 10 http: //myapp/shop/products Zdrojem je zde seznam výrobků Reprezentací může být HTML, XML nebo JSON http: //myapp/shop/products/1029 Zdrojem je zde konkrétní výrobek Reprezentací může být HTML, XML nebo JSON

Omezení na REST architekturu 11 Client-server Stateless – server neudržuje stav klienta Cacheable –

Omezení na REST architekturu 11 Client-server Stateless – server neudržuje stav klienta Cacheable – klient může kešovat stav Layered – klient neví o přítomnosti mezivrstev Možnost přesunu části kódu serveru na klienta (Java. Script) Jednotné rozhraní pro komunikaci URI ke stavu jsou připojena metadata, např. MIME stav může obsahovat linky na asociované zdroje

Ovládání keše pomocí REST 12 http: //localhost: 8089/web/rs/cache URL zdroje – keše Metoda GET

Ovládání keše pomocí REST 12 http: //localhost: 8089/web/rs/cache URL zdroje – keše Metoda GET na tomto zdroji vyčistí keš V modulu web vytvoříme třídu Cache. Resource @Path("cache") – URL fragment pro tento zdroj @Stateless – chování odpovídá bezstavovému EJB @Produces("text/plain") – MIME reprezentace zdroje Injektáž @EJB Photo. Cache photo. Cache Metoda clean. Cache deleguje na Photo. Cache

Úprava WEB-INF/web. xml 13

Úprava WEB-INF/web. xml 13

Domácí úkol 14

Domácí úkol 14

Dodatek: Aplikační vrstva 15

Dodatek: Aplikační vrstva 15

Dodatek: Prezentační vrstva 16

Dodatek: Prezentační vrstva 16

Dodatek: Diagram stránek 17

Dodatek: Diagram stránek 17