240 likes | 389 Views
Osnove SOA kori šćenjem REST-a, drugi deo. Marko Cvet ković - 12866. Preuzimanje podataka od REST servisa putem JWS-a. Upotreba klasa JAX-WS API-ja. javax.xml.ws.Dispatch <T> javax.xml.ws.Service. Dijagram toka podataka. HTTP GET, zahtev za XML dokument. HTTP odgovor, s adr ži traženi
E N D
Osnove SOA korišćenjemREST-a, drugi deo Marko Cvetković - 12866
Preuzimanje podataka od REST servisa putem JWS-a • Upotreba klasa JAX-WS API-ja. • javax.xml.ws.Dispatch<T> • javax.xml.ws.Service
Dijagram toka podataka HTTP GET, zahtev za XML dokument HTTP odgovor, sadrži traženi XML dokument
Implementacija dijagrama u Java kodu Java reprezentacija WSDL datoteke Generiše i pakuje HTTP GET zahtev Šalje pripremljeni zahtev i čeka na odgovor
Osnovne razlike u implementaciji korišćenjem JWS-a • Kod je robusniji • Sadrži parametre bitne JAX-WS API-ju, ali ne i samoj komunikaciji sa REST servisom • Primljeni XML odgovor, kao instanca klase Source, nudi daleko više funkcionalnosti
Slanje podataka REST servisu putem JWS-a • JAX-WS biblioteka • Klase Dispatch<T> i Service
Dijagram toka podataka Ostvarivanje HTTP POST konekcije http://<web_adresa>?SourceSystem=OMS Dodavanje XML dokumenta uz POST zahtev XML datoteka Prijem HTTP odgovora Kód HTTP odgovora
Implementacija dijagrama u Java kodu Preuzimanje HTTP odgovora Izvlačenje kóda HTTP odgovora
HttpURLConnection klasa ne pravi razliku između poruke i njene sadržine • HttpURLConnection klasa poruku predstavlja u vidu toka podataka (Stream) • Dispatch klasa poruku predstavlja takođe kao poruku, u vidu instance klase Source
XSLT transformacija podataka • SOA aplikacije se zasnivaju na transformacijama podataka iz jednog oblika u drugi. • XSLT – eXtensible Stylesheet Language Transformations. • Definisanje šablona preslikavanja podataka iz izvorne datoteke u odredišnu.
OMS – Order Management System • CSS – Customer Service System • Primer: nove porudžbine iz OMS-a prepisati u potrošačku istoriju u CSS-u.
Šabloni mapiranja u XSLT • XSLT definiše šablone preslikavanja podataka iz izvorne u odredišnu datoteku. • Za elemente-čvorove odredišne datoteke se definiše iz kojih elemenata izvorne datoteke se prepisuju podaci.
Primer XSLT datoteke Element u odredišnom dokumentu Šablon koji definiše iz kog elementa u izvornoj datoteci se prepisuje podatak
JAXP • Java API of XML Processing • Bliblioteka za procesiranje XSLT datoteka u Javi. • javax.xml.transform.Transformer • Razdvaja SOA komponente od SAX, DOM i XSLT implementacija. • Most između Jave i Java Web Servisa.
Interfejsi web servisa definišu format podataka koji primaju. • U XSLT datoteci se pamte šabloni preslikavanja. • Promena interfejsa nekog od web servisa bi zahtevala samo promenu šablona u XSDL datoteci.
REST servis realizovan bez JWS-a • Obrada HTTP GET zahteva. • Klasa za pribavljanje resursa. • Primer XML datoteke: “/order.xml”
Klasa za pribavljanje resursa • Kako se instancira ova klasa? • Kako se objekat tipa Source, koji vraća metoda ove klase, konvertuje u XML podatak u HTTP odgovoru? • Kako se ova klasa postavlja kao web servis?
Odgovor 1: klasa se instancira pozivom metode doGet(), odnosno instanciranjem samog servisa. • Odgovor 2: dobijeni odgovor se najpre konvertuje klasom Transformer, upisuje u StreamResult i onda šalje klijentu. • Odgovor 3: klasa se mora vezati za servlet njenim upisivanjem u web.xml, koji se nalazi u WAR paketu servleta.
REST servis realizovan pomoću JWS-a • Kao kontejner koristimo Provider<Source>, koja je analogna klasi Dispatch<Source>. • Klijent šalje HTTP POST zahtev. • Nove verzije JAX-WS-a prihvataju i HTTP GET zahteve.
Odgovori na prethodno postavljena pitanja • Odgovor 1: isti – klasa se instancira samim instanciranjem servisa. • Odgovor 2: odgovor se vraća kao instanca klase Source i kao takav se prosleđuje klijentu. • Odgovor 3: klasa se postavlja kao web servis putem anotacija u Java kodu.
Definiše servis kao REST Definiše tip veze sa klijentom. Bez ovoga, servis bi očekivao SOAP envelope.