1 VVOJ PODNIKOVCH APLIKAC NA PLATFORM JAVA CVIEN
- Slides: 17
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 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 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 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 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í 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 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 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 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, 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 – 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 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
Domácí úkol 14
Dodatek: Aplikační vrstva 15
Dodatek: Prezentační vrstva 16
Dodatek: Diagram stránek 17
- Microsoft.aspnetcore.spaservices.angularcli
- Aplikac
- Cvien
- Cvien
- Cvien
- Cvien
- Java platform micro edition
- Java 2 platform enterprise edition
- Java ee platform
- Awt adalah
- Import java.util.*
- Import java.io.*
- Import java.awt.event
- Import java util scanner
- Java
- Import java.util.*
- Java import java.util.*
- Java compiler translates java source code into