Webové služby v Java EE (JAX-WS) Marek Rychlý Vysoké uˇcení technické v Brneˇ Fakulta informaˇcních technologií Ústav informaˇcních systému˚
Pˇrednáška pro PDI 7. listopadu 2014
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
1 / 51
Obsah 1
Úvod k SOA a webovým službám Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
2
Java API for XML Web Services (JAX-WS) Poskytovatel webové služby pomocí JAX-WS Spotˇrebitel webové služby pomocí JAX-WS Použití JAX-WS v aplikaˇcním serveru a podpora v IDE
3
Java API for RESTful Web Services (JAX-RS) Representational State Transfer (REST) architektura Webové služby pomocí JAX-RS
4
ˇ Shrnutí a záver Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
2 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Obsah 1
Úvod k SOA a webovým službám Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
2
Java API for XML Web Services (JAX-WS) Poskytovatel webové služby pomocí JAX-WS Spotˇrebitel webové služby pomocí JAX-WS Použití JAX-WS v aplikaˇcním serveru a podpora v IDE
3
Java API for RESTful Web Services (JAX-RS) Representational State Transfer (REST) architektura Webové služby pomocí JAX-RS
4
ˇ Shrnutí a záver Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
3 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Servisneˇ orientovaná architektura (SOA) Definice (Service-Oriented Architecture, OASIS SOA RefModel) SOA je paradigma pˇredepisující zpusob ˚ uspoˇrádání a použití distribuovaných služeb, které mohou být spravovány ruznými ˚ vlastníky. Definuje jednotný zpusob ˚ inzerce, hledání, vzájemné komunikace a spotˇreby služeb s cílem ˇ ritelnými pˇredpoklady a dosáhnout požadovaných výsledku˚ v souladu s meˇ oˇcekáváním.
SOA je paradigma – kompozice služeb SOA je distribuovaná – autonomní, ale spolupracující služby SOA je heterogenní prostˇredí – služba pˇrístupná pˇres své rozhraní SOA je standardizovaná – popis rozhraní a zpusob ˚ komunikace služeb SOA podporuje business – služby realizují konkrétní business procesy
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
4 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Servisneˇ orientovaná architektura (SOA) Definice (Service-Oriented Architecture, OASIS SOA RefModel) SOA je paradigma pˇredepisující zpusob ˚ uspoˇrádání a použití distribuovaných služeb, které mohou být spravovány ruznými ˚ vlastníky. Definuje jednotný zpusob ˚ inzerce, hledání, vzájemné komunikace a spotˇreby služeb s cílem ˇ ritelnými pˇredpoklady a dosáhnout požadovaných výsledku˚ v souladu s meˇ oˇcekáváním.
SOA je paradigma – kompozice služeb (architektonický styl a zpusob ˚ analýzy, návrhu, integrace a údržby systému) ˚
SOA je distribuovaná – autonomní, ale spolupracující služby SOA je heterogenní prostˇredí – služba pˇrístupná pˇres své rozhraní SOA je standardizovaná – popis rozhraní a zpusob ˚ komunikace služeb SOA podporuje business – služby realizují konkrétní business procesy Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
4 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Servisneˇ orientovaná architektura (SOA) Definice (Service-Oriented Architecture, OASIS SOA RefModel) SOA je paradigma pˇredepisující zpusob ˚ uspoˇrádání a použití distribuovaných služeb, které mohou být spravovány ruznými ˚ vlastníky. Definuje jednotný zpusob ˚ inzerce, hledání, vzájemné komunikace a spotˇreby služeb s cílem ˇ ritelnými pˇredpoklady a dosáhnout požadovaných výsledku˚ v souladu s meˇ oˇcekáváním.
SOA je paradigma – kompozice služeb SOA je distribuovaná – autonomní, ale spolupracující služby (systém realizován jako kompozice úˇcelové spolupracujících služeb)
SOA je heterogenní prostˇredí – služba pˇrístupná pˇres své rozhraní SOA je standardizovaná – popis rozhraní a zpusob ˚ komunikace služeb SOA podporuje business – služby realizují konkrétní business procesy Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
4 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Servisneˇ orientovaná architektura (SOA) Definice (Service-Oriented Architecture, OASIS SOA RefModel) SOA je paradigma pˇredepisující zpusob ˚ uspoˇrádání a použití distribuovaných služeb, které mohou být spravovány ruznými ˚ vlastníky. Definuje jednotný zpusob ˚ inzerce, hledání, vzájemné komunikace a spotˇreby služeb s cílem ˇ ritelnými pˇredpoklady a dosáhnout požadovaných výsledku˚ v souladu s meˇ oˇcekáváním.
SOA je paradigma – kompozice služeb SOA je distribuovaná – autonomní, ale spolupracující služby SOA je heterogenní prostˇredí – služba pˇrístupná pˇres své rozhraní (služby mohou mít ruzné ˚ životní cykly, vlastníky, implementaˇcní technologie, atd.)
SOA je standardizovaná – popis rozhraní a zpusob ˚ komunikace služeb SOA podporuje business – služby realizují konkrétní business procesy Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
4 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Servisneˇ orientovaná architektura (SOA) Definice (Service-Oriented Architecture, OASIS SOA RefModel) SOA je paradigma pˇredepisující zpusob ˚ uspoˇrádání a použití distribuovaných služeb, které mohou být spravovány ruznými ˚ vlastníky. Definuje jednotný zpusob ˚ inzerce, hledání, vzájemné komunikace a spotˇreby služeb s cílem ˇ ritelnými pˇredpoklady a dosáhnout požadovaných výsledku˚ v souladu s meˇ oˇcekáváním.
SOA je paradigma – kompozice služeb SOA je distribuovaná – autonomní, ale spolupracující služby SOA je heterogenní prostˇredí – služba pˇrístupná pˇres své rozhraní SOA je standardizovaná – popis rozhraní a zpusob ˚ komunikace služeb (ˇrešení nezávislé na dodavateli, možnost náhrady služby, její outsourcing, atp.)
SOA podporuje business – služby realizují konkrétní business procesy Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
4 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Servisneˇ orientovaná architektura (SOA) Definice (Service-Oriented Architecture, OASIS SOA RefModel) SOA je paradigma pˇredepisující zpusob ˚ uspoˇrádání a použití distribuovaných služeb, které mohou být spravovány ruznými ˚ vlastníky. Definuje jednotný zpusob ˚ inzerce, hledání, vzájemné komunikace a spotˇreby služeb s cílem ˇ ritelnými pˇredpoklady a dosáhnout požadovaných výsledku˚ v souladu s meˇ oˇcekáváním.
SOA je paradigma – kompozice služeb SOA je distribuovaná – autonomní, ale spolupracující služby SOA je heterogenní prostˇredí – služba pˇrístupná pˇres své rozhraní SOA je standardizovaná – popis rozhraní a zpusob ˚ komunikace služeb SOA podporuje business – služby realizují konkrétní business procesy (služby zpracovávají a produkují dokumenty, spravují zdroje, atd.)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
4 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Architektura orientovaná na služby (SOA) SOA: architektura orientovaná na služby (Service-Oriented Architecture), obecný koncept spolupracujících služeb, WS: webové služby (Web Services), technologie pro implementaci SOA, spravuje W3C skupina Web Services Architectures. Role komunikujících stran: poskytovatel služeb implementuje a nabízí služby (service provider), služba je specifikovaná svým popisem (URI, rozhraním a protokolem), spotˇrebitel služeb na základeˇ popisu vyhledá službu v registru služeb a použije ji (service consumer).
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
5 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Konceptuální model SOA
model interakce mezi poskytovatelem služeb a spotˇrebitelem služeb
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
6 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Struktura SOA SOA je cˇ ásteˇcneˇ vrstevnatá architektura (vrstva = úrovenˇ abstrakce) 1
vrstva business procesu˚ – BP je posloupnost kroku˚ respektující business pravidla a vedoucí k zisku (hmotnému i nehmotnému), ˇ reprezentován sekvencí provedení nekolika služeb (choreografie služeb),
2
vrstva služeb – rozhraní jednotlivých komponent sjednocena do ˇ služeb, služba za behu sestavuje komponenty a pˇreposílá jim ˇ požadavky, služba na rozhraní zpˇrístupnuje své funkce (popis služby),
3
vrstva komponent – základní stavební kameny služeb, realizace ˇ požadované kvality služeb (QoS), funkˇcnosti služeb a zajištení ˇ a jejich funkce jsou pˇrístupné komponenty jsou cˇ erné skˇrínky pouze pˇres rozhraní.
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
7 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Informaˇcní systém – bez architektury SOA podsystémy jsou monolitické (komplikovaný pˇrístup k jednotlivým funkcím, nejasné rozhraní, obtížná integrace celých podsystému) ˚
podsystémy jsou striktneˇ ˇ oddelené, každý má samostatný životní cyklus (implementací, správou, možností modifikace, atd.)
komunikace podsystému˚ pˇres spoleˇcné úložišteˇ dat (problematická návaznost procesu, ˚ napˇr. „Order Status“, ˇ nejasná zodpovednost za data) (diagram pˇrevzat z „Sun: Service-Oriented Architecture – Overview“)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
8 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Informaˇcní systém – s architekturou SOA dekompozice na úrovenˇ jednotlivých služeb (jasneˇ definovaná rozhraní služeb, podsystémy vznikají kompozicí)
podsystémy se prolínají sdílenými službami, každá má samostatný životní cyklus (sdílení spoleˇcných cˇ ástí podsystému, ˚ napˇr. „Check Order Status“)
pˇrímá komunikace služeb, úložišteˇ dat pro dokumenty
(diagram pˇrevzat z „Sun: Service-Oriented Architecture – Overview“)
Marek Rychlý
(služby komunikují napˇríˇc podsystémy, s daty manipuluje služba reprezentující k datum ˚ pˇríslušný business proces)
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
9 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Spolupráce mezi službami v SOA služby poskytují své prostˇredky bud’ pˇrímo cílovému spotˇrebiteli anebo jiným službám, služby mezi sebou spolupracují (komunikují) zasíláním zpráv. Spolupráce mezi službami: kooperace – služba využívá prostˇredky jiné (rovnocenné) služby pro realizaci nabízených funkcí, agregace – služba sestavená ze dvou (nebo více, podˇrízených) služeb nabízí kombinaci funkcí dílˇcích služeb, choreografie – služby potom spolupracují za úˇcelem provedení konkrétního business procesu, orchestrace – služba ˇrídí souˇcinost ostatních služeb za úˇcelem provedení své cˇ ásti business procesu.
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
10 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Principy SOA
standardizace
→
kompatibilita, nezávislost
→ → → → → → →
ˇ údržba služeb snadnejší jednoznaˇcný zpusob ˚ použití ˇ zisk vývoj služby pˇrinese vetší ˇ ritelnost funkˇcnosti oveˇ pˇredvídatelnost chování implementaˇcní nezávislost ˇ tvorba složitejších služeb
(jednotný zpusob ˚ popisu služeb)
volné vázání abstrakce znovupoužitelnost nezávislost bezstavovost dohledatelnost kompozice
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
11 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Principy SOA
standardizace volné vázání
→ →
kompatibilita, nezávislost ˇ údržba služeb snadnejší
(minimum závislostí mezi službami, okolí služby závisí pouze na jejím rozhraní)
abstrakce znovupoužitelnost nezávislost bezstavovost dohledatelnost kompozice
Marek Rychlý
→ → → → → →
jednoznaˇcný zpusob ˚ použití ˇ zisk vývoj služby pˇrinese vetší ˇ ritelnost funkˇcnosti oveˇ pˇredvídatelnost chování implementaˇcní nezávislost ˇ tvorba složitejších služeb
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
11 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Principy SOA
standardizace volné vázání abstrakce
→ → →
kompatibilita, nezávislost ˇ údržba služeb snadnejší jednoznaˇcný zpusob ˚ použití
(služby pˇrístupné pouze pˇres rozhraní, zbytek zapouzdˇren)
znovupoužitelnost nezávislost bezstavovost dohledatelnost kompozice
Marek Rychlý
→ → → → →
ˇ zisk vývoj služby pˇrinese vetší ˇ ritelnost funkˇcnosti oveˇ pˇredvídatelnost chování implementaˇcní nezávislost ˇ tvorba složitejších služeb
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
11 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Principy SOA
standardizace volné vázání abstrakce znovupoužitelnost
→ → → →
kompatibilita, nezávislost ˇ údržba služeb snadnejší jednoznaˇcný zpusob ˚ použití ˇ zisk vývoj služby pˇrinese vetší
(služba použitelná v ruzných ˚ kontextech/systémech)
nezávislost bezstavovost dohledatelnost kompozice
Marek Rychlý
→ → → →
ˇ ritelnost funkˇcnosti oveˇ pˇredvídatelnost chování implementaˇcní nezávislost ˇ tvorba složitejších služeb
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
11 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Principy SOA
standardizace volné vázání abstrakce znovupoužitelnost nezávislost
→ → → → →
kompatibilita, nezávislost ˇ údržba služeb snadnejší jednoznaˇcný zpusob ˚ použití ˇ zisk vývoj služby pˇrinese vetší ˇ ritelnost funkˇcnosti oveˇ
(služby autonomní jednotky, nezávisí skryteˇ na svém okolí)
bezstavovost dohledatelnost kompozice
Marek Rychlý
→ → →
pˇredvídatelnost chování implementaˇcní nezávislost ˇ tvorba složitejších služeb
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
11 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Principy SOA
standardizace volné vázání abstrakce znovupoužitelnost nezávislost bezstavovost
→ → → → → →
kompatibilita, nezávislost ˇ údržba služeb snadnejší jednoznaˇcný zpusob ˚ použití ˇ zisk vývoj služby pˇrinese vetší ˇ ritelnost funkˇcnosti oveˇ pˇredvídatelnost chování
ˇ uchovávat viditelnou stavovou informaci) (služba by nemela
dohledatelnost kompozice
Marek Rychlý
→ →
implementaˇcní nezávislost ˇ tvorba složitejších služeb
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
11 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Principy SOA
standardizace volné vázání abstrakce znovupoužitelnost nezávislost bezstavovost dohledatelnost
→ → → → → → →
kompatibilita, nezávislost ˇ údržba služeb snadnejší jednoznaˇcný zpusob ˚ použití ˇ zisk vývoj služby pˇrinese vetší ˇ ritelnost funkˇcnosti oveˇ pˇredvídatelnost chování implementaˇcní nezávislost
(navazovány úˇceloveˇ poskytovatel služby dle potˇreby dohledatelný v adresáˇri)
kompozice
Marek Rychlý
→
ˇ tvorba složitejších služeb
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
11 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Principy SOA
standardizace volné vázání abstrakce znovupoužitelnost nezávislost bezstavovost dohledatelnost kompozice
→ → → → → → → →
kompatibilita, nezávislost ˇ údržba služeb snadnejší jednoznaˇcný zpusob ˚ použití ˇ zisk vývoj služby pˇrinese vetší ˇ ritelnost funkˇcnosti oveˇ pˇredvídatelnost chování implementaˇcní nezávislost ˇ tvorba složitejších služeb
ˇ (kompozice služeb do vetších funkˇcních celku˚ dle potˇreby)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
11 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Porovnání SOA s jinými architekturami a principy SOA vs. klient-server architektura klient–server = rozhraní a apl. logika × apl. logika, stav a sdílené zdroje, spotˇrebitel–poskytovatel = potˇrebuje × nabízí funkˇcnost, ˇ dekompozice (napˇr. menší nároky na zdroje), SOA je jemnejší ˇ výpoˇcetní logiky), SOA je více distribuovaná (rozmístení ˇ služby se snaží být bezstavové z vnejšího pohledu.
SOA vs. objektoveˇ orientovaný pˇrístup SOA pˇrístup preferuje volném provázání entit (služeb) × OO pˇrístup ˇ ejší ˇ vazby entit (objektu), pˇresneˇ vztahy mezi tˇrídami, tesn ˚ ˇ cnost × SOA pˇrístup s dediˇ ˇ cností základní vlastností OO pˇrístupu je dediˇ nepoˇcítá, preferuje delegaci, základní vlastností SOA pˇrístupu je bezstavovost entit × zapouzdˇrení dat do objektu˚ v OO pˇrístupu, ˇ aktivita služeb v SOA pˇrístupu je vyvolána až pˇríchodem nejaké zprávy, podobný pohled na abstrakci entit (rozhraní). Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
12 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Webové služby (Web Services)
ˇ a nejpoužívanejší ˇ technologie pro implementaci SOA Neznámejší Webové služby postaveny na „webových“ standardech: HTTP protokol a SOAP protokol (Simple Object Access Protocol), jazyky XML (eXtensible Markup Language) a XML Schema (XSD), registr UDDI (Universal Description, Discovery and Integration) jazyk WSDL (Web Services Description Language) definice Web Service zahrnuje tvorbu XSD a WSDL dokumentu˚ (tj. popis datových typu, ˚ operací, zpusobu ˚ volání rozhraní služby)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
13 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Webové služby (Web Services)
ˇ a nejpoužívanejší ˇ technologie pro implementaci SOA Neznámejší Webové služby postaveny na „webových“ standardech: HTTP protokol a SOAP protokol (Simple Object Access Protocol), (komunikaˇcní spojení, obálku a adresace zpráv pˇri volání konkrétních služeb)
jazyky XML (eXtensible Markup Language) a XML Schema (XSD), registr UDDI (Universal Description, Discovery and Integration) jazyk WSDL (Web Services Description Language) definice Web Service zahrnuje tvorbu XSD a WSDL dokumentu˚ (tj. popis datových typu, ˚ operací, zpusobu ˚ volání rozhraní služby)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
13 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Webové služby (Web Services)
ˇ a nejpoužívanejší ˇ technologie pro implementaci SOA Neznámejší Webové služby postaveny na „webových“ standardech: HTTP protokol a SOAP protokol (Simple Object Access Protocol), jazyky XML (eXtensible Markup Language) a XML Schema (XSD), ˇ (popis struktury a vlastní zápis informací behem pˇrenosu pˇri volání služeb)
registr UDDI (Universal Description, Discovery and Integration) jazyk WSDL (Web Services Description Language) definice Web Service zahrnuje tvorbu XSD a WSDL dokumentu˚ (tj. popis datových typu, ˚ operací, zpusobu ˚ volání rozhraní služby)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
13 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Webové služby (Web Services)
ˇ a nejpoužívanejší ˇ technologie pro implementaci SOA Neznámejší Webové služby postaveny na „webových“ standardech: HTTP protokol a SOAP protokol (Simple Object Access Protocol), jazyky XML (eXtensible Markup Language) a XML Schema (XSD), registr UDDI (Universal Description, Discovery and Integration) (mechanismus registru˚ pro vyhledávání webových služeb)
jazyk WSDL (Web Services Description Language) definice Web Service zahrnuje tvorbu XSD a WSDL dokumentu˚ (tj. popis datových typu, ˚ operací, zpusobu ˚ volání rozhraní služby)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
13 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Webové služby (Web Services)
ˇ a nejpoužívanejší ˇ technologie pro implementaci SOA Neznámejší Webové služby postaveny na „webových“ standardech: HTTP protokol a SOAP protokol (Simple Object Access Protocol), jazyky XML (eXtensible Markup Language) a XML Schema (XSD), registr UDDI (Universal Description, Discovery and Integration) jazyk WSDL (Web Services Description Language) ˇ služeb a zpusobu (popis funkcí a umístení ˚ komunikace v XML)
definice Web Service zahrnuje tvorbu XSD a WSDL dokumentu˚ (tj. popis datových typu, ˚ operací, zpusobu ˚ volání rozhraní služby)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
13 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Webové služby (Web Services)
ˇ a nejpoužívanejší ˇ technologie pro implementaci SOA Neznámejší Webové služby postaveny na „webových“ standardech: HTTP protokol a SOAP protokol (Simple Object Access Protocol), jazyky XML (eXtensible Markup Language) a XML Schema (XSD), registr UDDI (Universal Description, Discovery and Integration) jazyk WSDL (Web Services Description Language) definice Web Service zahrnuje tvorbu XSD a WSDL dokumentu˚ (tj. popis datových typu, ˚ operací, zpusobu ˚ volání rozhraní služby)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
13 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Další standardy kolem Web Services
Marek Rychlý
(diagram pˇrevzat z „Vinod Krishnan: SOA – a quick view“) Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
14 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
XML Schema Definition (XSD) Jazyk od W3C pro popis struktury/schéma XML dokumentu. ˚ (dalšími jazyky jsou napˇr. DTD, Relax NG, Schematron, atd.)
„W3C XML Schema Definition Language (XSD) 1.1“ popsaná v Part 1: Structures Part 2: Datatypes
Popis schéma je XML dokument s elementem <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:my="http://mycompany.com/hr/schemas" targetNamespace="http://mycompany.com/hr/schemas" elementFormDefault="qualified"> ...
Obsahuje pˇreddefinované jednoduché typy, další lze zadefinovat. (pˇreddefinované jsou napˇr. string, integer nebo date)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
15 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
XML Schema Definition (XSD) Jazyk od W3C pro popis struktury/schéma XML dokumentu. ˚ (dalšími jazyky jsou napˇr. DTD, Relax NG, Schematron, atd.)
„W3C XML Schema Definition Language (XSD) 1.1“ popsaná v Part 1: Structures Part 2: Datatypes
Popis schéma je XML dokument s elementem <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:my="http://mycompany.com/hr/schemas" targetNamespace="http://mycompany.com/hr/schemas" elementFormDefault="qualified"> ...
Obsahuje pˇreddefinované jednoduché typy, další lze zadefinovat. (pˇreddefinované jsou napˇr. string, integer nebo date)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
15 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
XML Schema Definition (XSD) Jazyk od W3C pro popis struktury/schéma XML dokumentu. ˚ (dalšími jazyky jsou napˇr. DTD, Relax NG, Schematron, atd.)
„W3C XML Schema Definition Language (XSD) 1.1“ popsaná v Part 1: Structures Part 2: Datatypes
Popis schéma je XML dokument s elementem <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:my="http://mycompany.com/hr/schemas" targetNamespace="http://mycompany.com/hr/schemas" elementFormDefault="qualified"> ...
Obsahuje pˇreddefinované jednoduché typy, další lze zadefinovat. (pˇreddefinované jsou napˇr. string, integer nebo date)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
15 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
XML Schema Definition (XSD) Jazyk od W3C pro popis struktury/schéma XML dokumentu. ˚ (dalšími jazyky jsou napˇr. DTD, Relax NG, Schematron, atd.)
„W3C XML Schema Definition Language (XSD) 1.1“ popsaná v Part 1: Structures Part 2: Datatypes
Popis schéma je XML dokument s elementem <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:my="http://mycompany.com/hr/schemas" targetNamespace="http://mycompany.com/hr/schemas" elementFormDefault="qualified"> ...
Obsahuje pˇreddefinované jednoduché typy, další lze zadefinovat. (pˇreddefinované jsou napˇr. string, integer nebo date)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
15 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Definice dokumentu˚ v XSD (pˇríklady uvedeny bez prefixu˚ jmených prostoru) ˚
elementy a atributy jednoduchých typu˚ <element name="..." type="..."/>
elementy složených typu˚ nebo samotné složené typy <element name="...">...
ˇ restrikce (omezení, výbery) jako jednoduché typy <simpleType name="..."> <xs:pattern value="[0-9][0-9]"/> <simpleType name="..."> <enumeration value="one"/>...
sekvence elementu˚ jako složené typy (ˇrazené) <sequence><element name="..." type="..."/> <element name="..." type="..."/>
množiny elementu˚ jako složené typy (neˇrazené) <element name="..." type="..."/> <element name="..." type="..."/>
. . . a další (vizte XML Schema Reference) Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
16 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Definice dokumentu˚ v XSD (pˇríklady uvedeny bez prefixu˚ jmených prostoru) ˚
elementy a atributy jednoduchých typu˚ <element name="..." type="..."/>
elementy složených typu˚ nebo samotné složené typy <element name="...">...
ˇ restrikce (omezení, výbery) jako jednoduché typy <simpleType name="..."> <xs:pattern value="[0-9][0-9]"/> <simpleType name="..."> <enumeration value="one"/>...
sekvence elementu˚ jako složené typy (ˇrazené) <sequence><element name="..." type="..."/> <element name="..." type="..."/>
množiny elementu˚ jako složené typy (neˇrazené) <element name="..." type="..."/> <element name="..." type="..."/>
. . . a další (vizte XML Schema Reference) Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
16 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Definice dokumentu˚ v XSD (pˇríklady uvedeny bez prefixu˚ jmených prostoru) ˚
elementy a atributy jednoduchých typu˚ <element name="..." type="..."/>
elementy složených typu˚ nebo samotné složené typy <element name="...">...
ˇ restrikce (omezení, výbery) jako jednoduché typy <simpleType name="..."> <xs:pattern value="[0-9][0-9]"/> <simpleType name="..."> <enumeration value="one"/>...
sekvence elementu˚ jako složené typy (ˇrazené) <sequence><element name="..." type="..."/> <element name="..." type="..."/>
množiny elementu˚ jako složené typy (neˇrazené) <element name="..." type="..."/> <element name="..." type="..."/>
. . . a další (vizte XML Schema Reference) Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
16 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Definice dokumentu˚ v XSD (pˇríklady uvedeny bez prefixu˚ jmených prostoru) ˚
elementy a atributy jednoduchých typu˚ <element name="..." type="..."/>
elementy složených typu˚ nebo samotné složené typy <element name="...">...
ˇ restrikce (omezení, výbery) jako jednoduché typy <simpleType name="..."> <xs:pattern value="[0-9][0-9]"/> <simpleType name="..."> <enumeration value="one"/>...
sekvence elementu˚ jako složené typy (ˇrazené) <sequence><element name="..." type="..."/> <element name="..." type="..."/>
množiny elementu˚ jako složené typy (neˇrazené) <element name="..." type="..."/> <element name="..." type="..."/>
. . . a další (vizte XML Schema Reference) Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
16 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Definice dokumentu˚ v XSD (pˇríklady uvedeny bez prefixu˚ jmených prostoru) ˚
elementy a atributy jednoduchých typu˚ <element name="..." type="..."/>
elementy složených typu˚ nebo samotné složené typy <element name="...">...
ˇ restrikce (omezení, výbery) jako jednoduché typy <simpleType name="..."> <xs:pattern value="[0-9][0-9]"/> <simpleType name="..."> <enumeration value="one"/>...
sekvence elementu˚ jako složené typy (ˇrazené) <sequence><element name="..." type="..."/> <element name="..." type="..."/>
množiny elementu˚ jako složené typy (neˇrazené) <element name="..." type="..."/> <element name="..." type="..."/>
. . . a další (vizte XML Schema Reference) Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
16 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Definice dokumentu˚ v XSD (pˇríklady uvedeny bez prefixu˚ jmených prostoru) ˚
elementy a atributy jednoduchých typu˚ <element name="..." type="..."/>
elementy složených typu˚ nebo samotné složené typy <element name="...">...
ˇ restrikce (omezení, výbery) jako jednoduché typy <simpleType name="..."> <xs:pattern value="[0-9][0-9]"/> <simpleType name="..."> <enumeration value="one"/>...
sekvence elementu˚ jako složené typy (ˇrazené) <sequence><element name="..." type="..."/> <element name="..." type="..."/>
množiny elementu˚ jako složené typy (neˇrazené) <element name="..." type="..."/> <element name="..." type="..."/>
. . . a další (vizte XML Schema Reference) Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
16 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Pˇríklad popisu v XSD <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:my="http://mycompany.com/hr/schemas" targetNamespace="http://mycompany.com/hr/schemas" elementFormDefault="qualified"> <xs:element name="HolidayRequest"> <xs:complexType><xs:all> <xs:element name="Holiday" type="my:HolidayType"/> <xs:element name="Employee" type="my:EmployeeType"/> <xs:complexType name="HolidayType"> <xs:sequence> <xs:element name="StartDate" type="xs:date"/> <xs:element name="EndDate" type="xs:date"/> <xs:complexType name="EmployeeType"> <xs:sequence> <xs:element name="Number" type="xs:integer"/> <xs:element name="FirstName" type="xs:string"/> <xs:element name="LastName" type="xs:string"/> Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
17 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Pˇríklad XML dokumentu podle uvedeného popisu Uvedenému popisu vyhovuje napˇr. následující dokument <StartDate>2006-07-03 <EndDate>2006-07-07 <Employee> 42 Arjen Poutsma
ˇ Holiday a Employee. Libovolné poˇradí elementu˚ umístení (ale pevné poˇradí jejich pod-elementu) ˚
Platné datum formátované jako YYYY-MM-DD. (datový typ definovaný ve specifikace XML Schema)
..................................................................... Pˇríklady XSD a WSDL pˇrevzaty z „Spring Web Services: Reference Documentation“. Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
18 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Pˇríklad XML dokumentu podle uvedeného popisu Uvedenému popisu vyhovuje napˇr. následující dokument <StartDate>2006-07-03 <EndDate>2006-07-07 <Employee> 42 Arjen Poutsma
ˇ Holiday a Employee. Libovolné poˇradí elementu˚ umístení (ale pevné poˇradí jejich pod-elementu) ˚
Platné datum formátované jako YYYY-MM-DD. (datový typ definovaný ve specifikace XML Schema)
..................................................................... Pˇríklady XSD a WSDL pˇrevzaty z „Spring Web Services: Reference Documentation“. Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
18 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Pˇríklad XML dokumentu podle uvedeného popisu Uvedenému popisu vyhovuje napˇr. následující dokument <StartDate>2006-07-03 <EndDate>2006-07-07 <Employee> 42 Arjen Poutsma
ˇ Holiday a Employee. Libovolné poˇradí elementu˚ umístení (ale pevné poˇradí jejich pod-elementu) ˚
Platné datum formátované jako YYYY-MM-DD. (datový typ definovaný ve specifikace XML Schema)
..................................................................... Pˇríklady XSD a WSDL pˇrevzaty z „Spring Web Services: Reference Documentation“. Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
18 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Web Services Description Language (WSDL) W3C zavedla WSDL jako standard pro XML popis webových služeb. Jaké funkce poskytuje daná služba? Jak muže ˚ být s danou službou navázána komunikace? Kde/kým je daná služba poskytována? Každá služba jako množina koncových bodu˚ (service endpoints). ˇ v techto bodech komunikuje s okolím pomocí zasílání zpráv, (pro jednoduchost si lze koncový bod pˇredstavit jako rozhraní služby)
WSDL poskytuje formální definici koncových bodu: ˚ 1
abstraktní popis koncového bodu, (popis rozhraní služby bez ohledu na konkrétní technologie a protokoly)
2
konkrétního popis koncového bodu. (navázání abstraktního popisu na reálnou implementaci a komunikace na konkrétní protokol)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
19 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Web Services Description Language (WSDL) W3C zavedla WSDL jako standard pro XML popis webových služeb. Jaké funkce poskytuje daná služba? Jak muže ˚ být s danou službou navázána komunikace? Kde/kým je daná služba poskytována? Každá služba jako množina koncových bodu˚ (service endpoints). ˇ v techto bodech komunikuje s okolím pomocí zasílání zpráv, (pro jednoduchost si lze koncový bod pˇredstavit jako rozhraní služby)
WSDL poskytuje formální definici koncových bodu: ˚ 1
abstraktní popis koncového bodu, (popis rozhraní služby bez ohledu na konkrétní technologie a protokoly)
2
konkrétního popis koncového bodu. (navázání abstraktního popisu na reálnou implementaci a komunikace na konkrétní protokol)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
19 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Web Services Description Language (WSDL) W3C zavedla WSDL jako standard pro XML popis webových služeb. Jaké funkce poskytuje daná služba? Jak muže ˚ být s danou službou navázána komunikace? Kde/kým je daná služba poskytována? Každá služba jako množina koncových bodu˚ (service endpoints). ˇ v techto bodech komunikuje s okolím pomocí zasílání zpráv, (pro jednoduchost si lze koncový bod pˇredstavit jako rozhraní služby)
WSDL poskytuje formální definici koncových bodu: ˚ 1
abstraktní popis koncového bodu, (popis rozhraní služby bez ohledu na konkrétní technologie a protokoly)
2
konkrétního popis koncového bodu. (navázání abstraktního popisu na reálnou implementaci a komunikace na konkrétní protokol)
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
19 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Abstraktní a konkrétní popis ve WSDL Abstraktní popis koncového bodu: popis rozhraní služby bez ohledu na konkrétní technologie a protokoly, tˇri základní oddíly: message: popis zpráv, které pˇredstavují operace a jejich parametry. operation: popis operací, jejich vstupní a výstupní parametry, interface: rozhraní služby, tj. poskytované operace, Konkrétní popis koncového bodu: navázání abstraktního popisu na reálnou implementaci a komunikace na konkrétní protokol, tˇrí základních oddíly: binding: formát volání služby, popis protokolu (napˇr. v SOAP) pro jednotlivé operation nebo celé interface, service: popis služby jako seskupení prvku˚ „endpoints“, endpoint: fyzická adresa, na které je služba pˇrístupná. Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
20 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Abstraktní a konkrétní popis ve WSDL Abstraktní popis koncového bodu: popis rozhraní služby bez ohledu na konkrétní technologie a protokoly, tˇri základní oddíly: message: popis zpráv, které pˇredstavují operace a jejich parametry. operation: popis operací, jejich vstupní a výstupní parametry, interface: rozhraní služby, tj. poskytované operace, Konkrétní popis koncového bodu: navázání abstraktního popisu na reálnou implementaci a komunikace na konkrétní protokol, tˇrí základních oddíly: binding: formát volání služby, popis protokolu (napˇr. v SOAP) pro jednotlivé operation nebo celé interface, service: popis služby jako seskupení prvku˚ „endpoints“, endpoint: fyzická adresa, na které je služba pˇrístupná. Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
20 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Ukázka WSDL popisu služby I Definujeme jmenné prostory pro jednotlivé cˇ ásti dokumentu: soap: WSDL popisuje službu pro protokol SOAP, tns: názvy používané v naší aplikaci, xsd: popis protokolu volání služby jako XML dokumentu, <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:schema="http://mycompany.com/hr/schemas" xmlns:tns="http://mycompany.com/hr/definitions" targetNamespace="http://mycompany.com/hr/definitions"> <wsdl:types> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:import namespace="http://mycompany.com/hr/schemas" schemaLocation="hr.xsd"/>
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
21 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Ukázka WSDL popisu služby II
Definujeme zprávy pˇrijímané a navracené danou službou1 : message: definice vlastní zprávy pˇrenášené pˇri komunikaci, operation: pˇriˇrazení zpráv k operacím posytovaným službou. <wsdl:message name="HolidayRequest"> <wsdl:part element="schema:HolidayRequest" name="HolidayRequest"/> <wsdl:portType name="HumanResource"> <wsdl:operation name="Holiday"> <wsdl:input message="tns:HolidayRequest" name="HolidayRequest"/>
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
22 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Ukázka WSDL popisu služby III ˇ služby2 : Popis formátu volání operací pro SOAP a umístení <wsdl:binding name="HumanResourceBinding" type="tns:HumanResource"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="Holiday"> <soap:operation soapAction="http://mycompany.com/RequestHoliday"/> <wsdl:input name="HolidayRequest"> <soap:body use="literal"/> <wsdl:service name="HumanResourceService"> <wsdl:port binding="tns:HumanResourceBinding" name="HumanResourcePort"> <soap:address location="http://localhost:8080/holidayService/"/>
1 Elementy 2 Element Marek Rychlý
types, message a portType popisují, co služba poskytuje. binding popisuje, jak služba komunikuje, a service, kde ji kontaktovat. Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
23 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Simple Object Access Protocol (SOAP)
ˇ základní vrstva WS technologie, výmena XML zpráv, ˇ patˇrí do aplikaˇcní vrstvy petivrstvého TCP/IP modelu, bezstavový protokol, nezávislé na protokolu a implementaci, (jedním z protokolu˚ komunikace je HTTP/HTTPS protokol)
ˇ podporuje nekolik typu˚ volání funkcí služeb, ˇ je implementované Remote (kde klient posílá XML zprávu na server, nejznámejší Procedure Call (RPC), SOAP vychází ze staršího XML-RPC)
ˇ definuje strukturu zprávy (obálka kolem hlaviˇcky a tela). ˇ (pravdepodobn eˇ vychází ze staršího Web Distributed Data eXchange (WDDX))
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
24 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Simple Object Access Protocol (SOAP)
ˇ základní vrstva WS technologie, výmena XML zpráv, ˇ patˇrí do aplikaˇcní vrstvy petivrstvého TCP/IP modelu, bezstavový protokol, nezávislé na protokolu a implementaci, (jedním z protokolu˚ komunikace je HTTP/HTTPS protokol)
ˇ podporuje nekolik typu˚ volání funkcí služeb, ˇ je implementované Remote (kde klient posílá XML zprávu na server, nejznámejší Procedure Call (RPC), SOAP vychází ze staršího XML-RPC)
ˇ definuje strukturu zprávy (obálka kolem hlaviˇcky a tela). ˇ (pravdepodobn eˇ vychází ze staršího Web Distributed Data eXchange (WDDX))
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
24 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Simple Object Access Protocol (SOAP)
ˇ základní vrstva WS technologie, výmena XML zpráv, ˇ patˇrí do aplikaˇcní vrstvy petivrstvého TCP/IP modelu, bezstavový protokol, nezávislé na protokolu a implementaci, (jedním z protokolu˚ komunikace je HTTP/HTTPS protokol)
ˇ podporuje nekolik typu˚ volání funkcí služeb, ˇ je implementované Remote (kde klient posílá XML zprávu na server, nejznámejší Procedure Call (RPC), SOAP vychází ze staršího XML-RPC)
ˇ definuje strukturu zprávy (obálka kolem hlaviˇcky a tela). ˇ (pravdepodobn eˇ vychází ze staršího Web Distributed Data eXchange (WDDX))
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
24 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Simple Object Access Protocol (SOAP)
ˇ základní vrstva WS technologie, výmena XML zpráv, ˇ patˇrí do aplikaˇcní vrstvy petivrstvého TCP/IP modelu, bezstavový protokol, nezávislé na protokolu a implementaci, (jedním z protokolu˚ komunikace je HTTP/HTTPS protokol)
ˇ podporuje nekolik typu˚ volání funkcí služeb, ˇ je implementované Remote (kde klient posílá XML zprávu na server, nejznámejší Procedure Call (RPC), SOAP vychází ze staršího XML-RPC)
ˇ definuje strukturu zprávy (obálka kolem hlaviˇcky a tela). ˇ (pravdepodobn eˇ vychází ze staršího Web Distributed Data eXchange (WDDX))
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
24 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Simple Object Access Protocol (SOAP)
ˇ základní vrstva WS technologie, výmena XML zpráv, ˇ patˇrí do aplikaˇcní vrstvy petivrstvého TCP/IP modelu, bezstavový protokol, nezávislé na protokolu a implementaci, (jedním z protokolu˚ komunikace je HTTP/HTTPS protokol)
ˇ podporuje nekolik typu˚ volání funkcí služeb, ˇ je implementované Remote (kde klient posílá XML zprávu na server, nejznámejší Procedure Call (RPC), SOAP vychází ze staršího XML-RPC)
ˇ definuje strukturu zprávy (obálka kolem hlaviˇcky a tela). ˇ (pravdepodobn eˇ vychází ze staršího Web Distributed Data eXchange (WDDX))
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
24 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Struktura SOAP zprávy
(diagram pˇrevzat z „The Java EE 5 Tutorial“)
zpráva = ˇ obálka s hlaviˇckami (nepovinné) a telem + pˇrílohy (nepovinné) Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
25 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Ukázka struktury SOAP zprávy v HTTP protokolu MIME-Version: 1.0 Content-Type: text/xml; charset=UTF-8 Content-Transfer-Encoding: 8bit <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Header/> <env:Body> 2006-07-03 2006-07-07 42 Arjen Poutsma
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
26 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Existuje mnoho scénáˇru˚ volání služeb pˇres SOAP Fire-and-forget (one-way) (klient odešle požadavek na službu a déle se neˇceká, nic nevrací)
Request/Response ˇ (odešle požadavek a cˇ eká na odpoved’)
Request with acknowledgement (odešle požadavek a cˇ eká na potvrzení pˇríjmu)
Remote Procedure Call (RPC) (odešle požadavek se serializovanými parametry volané procedury ˚ a cˇ eká na ˇ ˇ ˇ odpoved’ opet v podobe serializovaných návratových hodnot)
. . . a další (vizte „SOAP Version 1.2 Usage Scenarios“) Synchronní/asynchronní komunikace záleží na transportním protokolu. ˇ napˇr. narozdíl od emailových zpráv) (napˇr. HTTP(s) synchronní, umí odpovedi,
Samozˇrejmeˇ je možno implemntovat asynchronicitu na úrovni služby. ˇ adresu vlastní (požadavek pošle klient metodou fire-and-forget, ale pˇriloží v nem ˇ služby, která je pˇripravena pˇrijmout odpoved’) Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
27 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Existuje mnoho scénáˇru˚ volání služeb pˇres SOAP Fire-and-forget (one-way) (klient odešle požadavek na službu a déle se neˇceká, nic nevrací)
Request/Response ˇ (odešle požadavek a cˇ eká na odpoved’)
Request with acknowledgement (odešle požadavek a cˇ eká na potvrzení pˇríjmu)
Remote Procedure Call (RPC) (odešle požadavek se serializovanými parametry volané procedury ˚ a cˇ eká na ˇ ˇ ˇ odpoved’ opet v podobe serializovaných návratových hodnot)
. . . a další (vizte „SOAP Version 1.2 Usage Scenarios“) Synchronní/asynchronní komunikace záleží na transportním protokolu. ˇ napˇr. narozdíl od emailových zpráv) (napˇr. HTTP(s) synchronní, umí odpovedi,
Samozˇrejmeˇ je možno implemntovat asynchronicitu na úrovni služby. ˇ adresu vlastní (požadavek pošle klient metodou fire-and-forget, ale pˇriloží v nem ˇ služby, která je pˇripravena pˇrijmout odpoved’) Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
27 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Existuje mnoho scénáˇru˚ volání služeb pˇres SOAP Fire-and-forget (one-way) (klient odešle požadavek na službu a déle se neˇceká, nic nevrací)
Request/Response ˇ (odešle požadavek a cˇ eká na odpoved’)
Request with acknowledgement (odešle požadavek a cˇ eká na potvrzení pˇríjmu)
Remote Procedure Call (RPC) (odešle požadavek se serializovanými parametry volané procedury ˚ a cˇ eká na ˇ ˇ ˇ odpoved’ opet v podobe serializovaných návratových hodnot)
. . . a další (vizte „SOAP Version 1.2 Usage Scenarios“) Synchronní/asynchronní komunikace záleží na transportním protokolu. ˇ napˇr. narozdíl od emailových zpráv) (napˇr. HTTP(s) synchronní, umí odpovedi,
Samozˇrejmeˇ je možno implemntovat asynchronicitu na úrovni služby. ˇ adresu vlastní (požadavek pošle klient metodou fire-and-forget, ale pˇriloží v nem ˇ služby, která je pˇripravena pˇrijmout odpoved’) Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
27 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Existuje mnoho scénáˇru˚ volání služeb pˇres SOAP Fire-and-forget (one-way) (klient odešle požadavek na službu a déle se neˇceká, nic nevrací)
Request/Response ˇ (odešle požadavek a cˇ eká na odpoved’)
Request with acknowledgement (odešle požadavek a cˇ eká na potvrzení pˇríjmu)
Remote Procedure Call (RPC) (odešle požadavek se serializovanými parametry volané procedury ˚ a cˇ eká na ˇ ˇ ˇ odpoved’ opet v podobe serializovaných návratových hodnot)
. . . a další (vizte „SOAP Version 1.2 Usage Scenarios“) Synchronní/asynchronní komunikace záleží na transportním protokolu. ˇ napˇr. narozdíl od emailových zpráv) (napˇr. HTTP(s) synchronní, umí odpovedi,
Samozˇrejmeˇ je možno implemntovat asynchronicitu na úrovni služby. ˇ adresu vlastní (požadavek pošle klient metodou fire-and-forget, ale pˇriloží v nem ˇ služby, která je pˇripravena pˇrijmout odpoved’) Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
27 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Existuje mnoho scénáˇru˚ volání služeb pˇres SOAP Fire-and-forget (one-way) (klient odešle požadavek na službu a déle se neˇceká, nic nevrací)
Request/Response ˇ (odešle požadavek a cˇ eká na odpoved’)
Request with acknowledgement (odešle požadavek a cˇ eká na potvrzení pˇríjmu)
Remote Procedure Call (RPC) (odešle požadavek se serializovanými parametry volané procedury ˚ a cˇ eká na ˇ ˇ ˇ odpoved’ opet v podobe serializovaných návratových hodnot)
. . . a další (vizte „SOAP Version 1.2 Usage Scenarios“) Synchronní/asynchronní komunikace záleží na transportním protokolu. ˇ napˇr. narozdíl od emailových zpráv) (napˇr. HTTP(s) synchronní, umí odpovedi,
Samozˇrejmeˇ je možno implemntovat asynchronicitu na úrovni služby. ˇ adresu vlastní (požadavek pošle klient metodou fire-and-forget, ale pˇriloží v nem ˇ služby, která je pˇripravena pˇrijmout odpoved’) Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
27 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
Existuje mnoho scénáˇru˚ volání služeb pˇres SOAP Fire-and-forget (one-way) (klient odešle požadavek na službu a déle se neˇceká, nic nevrací)
Request/Response ˇ (odešle požadavek a cˇ eká na odpoved’)
Request with acknowledgement (odešle požadavek a cˇ eká na potvrzení pˇríjmu)
Remote Procedure Call (RPC) (odešle požadavek se serializovanými parametry volané procedury ˚ a cˇ eká na ˇ ˇ ˇ odpoved’ opet v podobe serializovaných návratových hodnot)
. . . a další (vizte „SOAP Version 1.2 Usage Scenarios“) Synchronní/asynchronní komunikace záleží na transportním protokolu. ˇ napˇr. narozdíl od emailových zpráv) (napˇr. HTTP(s) synchronní, umí odpovedi,
Samozˇrejmeˇ je možno implemntovat asynchronicitu na úrovni služby. ˇ adresu vlastní (požadavek pošle klient metodou fire-and-forget, ale pˇriloží v nem ˇ služby, která je pˇripravena pˇrijmout odpoved’) Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
27 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Poskytovatel webové služby pomocí JAX-WS Spotˇrebitel webové služby pomocí JAX-WS Použití JAX-WS v aplikaˇcním serveru a podpora v IDE
Obsah 1
Úvod k SOA a webovým službám Architektura orientovaná na služby (SOA) Struktura, chování a vlastnosti služeb v SOA Webové služby (Web Services) Technologie webových služeb (XSD, WSDL a SOAP)
2
Java API for XML Web Services (JAX-WS) Poskytovatel webové služby pomocí JAX-WS Spotˇrebitel webové služby pomocí JAX-WS Použití JAX-WS v aplikaˇcním serveru a podpora v IDE
3
Java API for RESTful Web Services (JAX-RS) Representational State Transfer (REST) architektura Webové služby pomocí JAX-RS
4
ˇ Shrnutí a záver Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
28 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Poskytovatel webové služby pomocí JAX-WS Spotˇrebitel webové služby pomocí JAX-WS Použití JAX-WS v aplikaˇcním serveru a podpora v IDE
Java API for XML Web Services (JAX-WS) pro realizaci XML webových služeb a jejich klientu˚ v Java EE, (poskytovatelu˚ a spotˇrebitelu˚ služeb dle SOA)
používá pˇrenos XML zpráv SOAP protokolem pˇres HTTP, (pˇres knihovny SOAP with Attachments API for Java, SAAJ)
podporuje ruzné ˚ modely komunikace3 : (implicitneˇ se použije „Document/literal“, nastavitelné pomocí anotace) 1
RPC/encoded ˇ (jednoduché WSDL s názvem operace a typy parametru˚ pˇrímo ve zpráve)
2
RPC/literal ˇ (podobneˇ jako pˇredchozí, ale bez typu˚ ve zpráve)
3
Document/encoded (nepoužívá se, není podporováno „standardy“ organizace WS-I)
4
ˇ používaný Document/literal – nejˇcasteji (WSDL popis obsahuje definici typu˚ v XML Schema, lehce validovatelné)
3 http: //www.ibm.com/developerworks/webservices/library/ws-whichwsdl/ Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
29 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Poskytovatel webové služby pomocí JAX-WS Spotˇrebitel webové služby pomocí JAX-WS Použití JAX-WS v aplikaˇcním serveru a podpora v IDE
Implementace JAX-WS
webové služby jsou definovány jako Java tˇrídy s poskytovanými metodami oznaˇcenými pomocí anotací, (automatický pˇrevod definice rozhraní tˇrídy do popisu pomocí WSDL)
spotˇrebitel vytvoˇrí pomocí JAX-WS lokální proxy pro vzdálenou webovou službu a tu transparentneˇ používá, (proxy má stejné rozhraní jako tˇrída implementující webovou službu u poskytovatele, pˇrevod volání metod proxy na SOAP zprávy je automatický),
respektuje nezávislost na platformeˇ – lze komunikovat s libovolneˇ implementovanými službami. ˇ pomocí JAX-WS, apod.) (tzn. se službami neimplementovanými v Jave,
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
30 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Poskytovatel webové služby pomocí JAX-WS Spotˇrebitel webové služby pomocí JAX-WS Použití JAX-WS v aplikaˇcním serveru a podpora v IDE
Technologie JAX-WS v Java EE podle [Jendrock et al., 2014]
Webové služby v Java EE–(JAX-WS) Pˇrednáška pro PDI, 2014 – databáze tenký/tlustý klient Java—EE aplikaˇ c7.nílistopadu server
Marek Rychlý
31 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Poskytovatel webové služby pomocí JAX-WS Spotˇrebitel webové služby pomocí JAX-WS Použití JAX-WS v aplikaˇcním serveru a podpora v IDE
Komunikace pˇres JAX-WS podle [Jendrock et al., 2014]
JAX-WS tvoˇrí abstrakci nad SOAP komunikací webových služeb
Marek Rychlý
Webové služby v Java EE (JAX-WS) — Pˇrednáška pro PDI, 7. listopadu 2014
32 / 51
Úvod k SOA a webovým službám Java API for XML Web Services (JAX-WS) Java API for RESTful Web Services (JAX-RS) ˇ Shrnutí a záver
Poskytovatel webové služby pomocí JAX-WS Spotˇrebitel webové služby pomocí JAX-WS Použití JAX-WS v aplikaˇcním serveru a podpora v IDE
Implementace poskytovatele WS pomocí JAX-WS Použití anotací @javax.jws.WebService a @javax.jws.WebMethod: webová služba je realizována jako rozhraní/tˇrída s anotací @WebService, (service endpoint interface/service endpoint implementation (SEI)) ˇ implicitní je definice rozhraní služby spoleˇcneˇ s implementací (ve tˇríde), (pˇrímo u implementace metod tˇrídy pomocí anotace @WebMethod)
ˇ ˇ definici rozhraní služby, parametr endpointInterface umožnuje oddelit (rozhraní musí rozšiˇrovat rozhraní Remote a oznaˇcit metody pomocí @WebMethod) tˇrída implementující službu nesmí být final nebo abstract, musí mít implicitní bezparametrický konstruktor, (metody s anotací @PostConstruct a @PreDestroy obslouží vznik a zánik)
metody rozhraní/tˇrídy pro webovou službu (anotace @WebMethod) musí být public a nesmí být static nebo final, typy parametru˚ a návratových hodnot metod rozhraní/tˇrídy pro webovou službu jsou omezeny Java Architecture for XML Data Binding (JAXB), z tˇrídy (tj. z implementace služby) lze generovat popis služby. (wsgen -d