java web servisi

50
JAVA WEB SERVISI Miroslav Naumovski 12999

Upload: wesley

Post on 10-Feb-2016

48 views

Category:

Documents


1 download

DESCRIPTION

Java web Servisi. Miroslav Naumovski 12999. Neke osnovne stvari. Za po četak, da definišemo neke stvari i izraze koji će se nadalje spominjati. XML. XML je skra ć enica od EXtensible Markup Language XML je jezik sli č an HTML -u - PowerPoint PPT Presentation

TRANSCRIPT

Slide 1

Java web ServisiMiroslav Naumovski 12999Neke osnovne stvariZa poetak, da definiemo neke stvari i izraze koji e se nadalje spominjati

XMLXML je skraenica od EXtensible Markup LanguageXML je jezik slian HTML-uXML je zamiljen i projektovan da PRENOSI podatke, a ne da ih prikazujeXML ne postoje predefinisane tagove.Morate praviti svoje tagoveXML je pravljen da bude self-descriptive da opisuje sam sebe

XML vs HTMLXML nije zamena za HTMLXML je projektovan da prenosi i uva podatkeHTML je projektovan da prikazuje podatke fokusirajui se na to kako izgledajuXML je kreiran s ciljem da se struktuiraju, snimaju i prenose informacijeXML je softverski i hardverski nezavisan alat za prenos informacijata su web servisiWeb servisi su aplikacijeKomuniciraju kroz otvorene protokoleWeb servisi su samostalni i opisuju sami sebeWeb servisi se mogu otkriti kroz UDDIWeb servisi se mogu koristiti od strane drugih aplikacijaXML je osnova za web servise

Kako radeOsnovna platforma za web servise je XML + HTTP.XML je jezik koji se moze koristiti izmeu razliitih platformi i programskih jezika a da ipak prenese sloene poruke i funkcije.Elementi platforme web servisa:SOAP (Simple Object Access Protocol)UDDI (Universal Description, Discovery and Integration)WSDL (Web Services Description Language)

Razliite platformeTreba da saraujuZato su napravljene web aplikacijeMale aplikacije koje se pokreu na webuUklapaju se u bilo koju platofmu,jer su napravljene po standardima browseraNjihovim korienjem delimo usluge sa ostatkom sveta.Primer:2 servera sa razliitim OS.Koriste se u 2 svrhePonovno korienje aplikacijskih komponenti(kako bi se koristile gotove aplikacijske komponente, npr. konverzija valute)Povezivanje postojeeg softvera reavanje problema interoperabilnostiWeb servisi imaju 3 razliita elementa platforme:SOAP, WSDL i UDDI

ta je SOAP ?To je protokol baziran na XML-u napravljen da omogui aplikacijama razmenu podataka preko HTTP-a.Ili prostije SOAP je protokol za pristupanje Web servisu.Skraenica od Simple Object Access ProtocolSOAP je komunikacioni protokolSOAP je format za slanje porukaSOAP je projektovan da radi preko interneta SOAP je nezavisan od platformeSOAP je nezavisan od programskog jezikaSOAP je baziran na XML-uSOAP je prost i lako se nadogradjuje

ta je SOAP ?Slui za messaging, slanje poruka,sastoji se od pravila za struktuiranje podataka.esto se koristi kada se web servisi koriste kao RPC(Remote Procedure call).Primer baze zaposlenihLogika za pristup i zahteve bazi enkapsulirana u 1 metodi pisanoj u nekom programskom jezikuPostavlja se funkcija koja sluaSOAP Primer

SOAP zahtev se transformie u poziv metodeta je WSDL?WSDL je je jezik baziran na XML-u a slui za lociranje i opis Web servisa.Opisuje interfejs web servisa.Definie lokaciju servisa i operacije koje on prua.Takodje definie format klijent/server poruka koje se razmenjuju.Klijent ita WSDL kako bi utvrdio ta server nudi.Bilo koji specifini tipovi podataka ugraeni su u WSDL u XML Schema formatu.Klijent za pozivanje zapravo koristi SOAP kako bi pozvao neku on funkcija definisanih u WSDL-uWSDL je skracenica od Web Services Description LanguageWSDL je baziran na XML - uWSDL se koristi za opis Web servisaWSDL se koristi za lociranje Web servisa

ta je UDDI ?UDDI je servis gde kompanije mogu da prijave(registruju) ili trae Web servise.UDDI je skraceno od Universal Description, Discovery and IntegrationUDDI je direktorijum za snimanje informacija o Web servisimaUDDI je direkorijum interfejsa web servisa opisanih u WSDL-uUDDI komunicira preko SOAP-aUDDI ugradjen je u .NET platformuta je UDDI ?Registar baziran na XML-u za kompanije irom sveta koje pruaju web serviseNjegov cilj je da ih povee,omogui online transakcije,tj. da kompanije pronau jedna drugu na internetu i interoperabilno i elektronski da posluju.UDDI je kao telefonski imenik: imena kompanija,proizvodi, ili web servisi koje pruajuKako sve ovo radi?Web servisi mogu da se koriste na 3 naina:RPC(Remote Procedure Call)SOA (Service Oriented Architecture)REST(Representational state transfer)

RPCRPC Web servisi predstavljaju interfejs poziva distribuirane funkcije.Osnovna jedinica RPC servisa je WSDL operacijairoko rasprostranjen, ali nije loosley coupledA to je sistem ija svaka komponenta zna jako malo ili uopte o drugim komponentama sistemaRPC pokree klijent, koji alje zahtev i parametre poznatom serveru. Udaljeni server vraa odgovor, I aplikacija nastavlja sa izvrenjem. Dok server obradjuje zahtev, klijent je blokiran(eka dok server ne vrati rezultat).

SOA(Service Oriented Architecture)Osnovna jedinica komunikacije je poruka,a ne operacijaSistemi bazirani na SOA su porukama OrijentisaniLoose coupling je prisutan, jer je akcenat baen na ugovor koji WSDL obezbeuje, umesto na pozadinske implementacione detaljeSOA

RESTREST pokusava da opie arhitekture koje koriste HTTP ili sline protokole ograniavajui svoj interfejs na set dobro poznatih, standardnih operacija(kao sto su GET, POST, PUT, DELETE kod HTTP-a). Ovde, fokus je baen na interagovanje resursima okruenja, umesto na poruke ili operacije.Arhitektura bazirana na REST-u moe da koristi WSDL da opise SOAP slanje poruka preko HTTP-a, moe biti implementirana kao apstrakcija SOAP-a (kao sloj iznad), ili moe da uopste i ne koristi SOAP.

Java web servisiPrve verzije servisa su bile:JAX-RPC 1.0J2EE 1.4 koja je sadrala JAX-RPC 1.1Najnovija verzija:Java EE6Java Web ServisiBaziraju se na sledeim standardima:JAX-WS : Java API za servise bazirane na XML-u.Naslednik JAX-RPC-a, omogucava razvoj i koriscenje web servisa sa Javom.JAXB Java Architecture for XML Binding. Tesno povezan za JAX-om JAXB standard kontrolise kako su Java objekti predstavljeni u XML-u.WS-Metadata Web Services Metadata za Java platformu.WS-Metadata obezbedjuje zapise koji doprinose fleksibilnoj definiciji i koriscenju Web ServisaWSEE Web Services for Java EE.Definise model programiranja i run-time ponaanje Web Servisa u Java EE kontejneru

WSPA(Web Service Platform Architecture)Platforma web servisa je set alata za pozivanje i razvoj web servisa korienjem odreenog programskog jezikaServer-side komponente imaju nekakvu vrstu kontejnera(Java EE aplikacioni server)Client-side komponente su obino pakovane kao set alata za pristupanje instancama Java interfejsa koje predstavljaju neki web servisBilo koja web servis platforma ima 3 dela svog jezgraInvokacija(pozivanje)SerijalizacijaRazvoj(Deployment)Invokacija Server-SidePrimanje SOAP poruke iz transporta (na primer sa HTTP-a)Pozivanje handlera koji vre predobradu poruke(na primer kako bi se obradilo SOAP zaglavlje)Odreivanje servisa kome je poruka namenjena, drugim reima, koju WSDL operaciju funkcija treba da pozove.Posto je detektovana target operacija,odredjivanje koja Java klasa/metod treba da se pozove.Ovo zovemo Java target.Odreivanje Java target-a se takodje zove dispatchingProsledjivanje SOAP poruke serijalizacionom podsistemu kako bi je deserijalizovao u Java objekte koji se mogu proslediti Java targetu kao parametri.Pozivanje(invoking) Java targeta koriscenjem parametara generisanih serijalizacionim podsistemom i generisanje Java objekta koji target metod vraca.Prosledjivanje objekta koji je funkcija vratila Serijalizacionom podsistemu kako bi ga serijalizovao u XML element u skladu sa WSDL-omOmotavanje tog XML elementa kao SOAP odgovora ponovo u skladu za WSDL-omPustanje SOAP odgovora nazad na transport za isporuku

Invokacija Client-SideNa klijent strani invokacioni sistem je slian ukoliko pozivamo web servis korienjem Java interfejsaAko klijent radi sa XML-om lake je samo napraviti SOAP poruku i proslediti je web servisuAko klijent radi sa Java objektima kako JWS pretpostavlja, na scenu stupa Client-Side Invocation SystemInvokacija Client-SideKreiranje instance web servis endpoint-a(krajnje tacke) koja implementira Java interfejs koji se u skladu sa JWS terminologijom naziva service endpoint interface(SEI).Obino se SEI instance implementiraju korienjem Java proksija ili invocation handlera.Pozivanje SEI instanceUzimanje parametara prosledjenih SEI-ju i njihovo slanje serializacionom podsistemu gde se serijalizuju u XML elemente u skladu sa XML emom definisanom WSDL-om target servisaOmotavanje parametara u SOAP poruku u skladu sa WSDL-om.Pozivanje handlera koji post-procesiraju poruku( na primer za podesavanje SOAP zaglavlja)Predaja poruke transportu za isporuku na target web servisPrimanje SOAP poruke sa odgovorom iz transportaProsleivanje SOAP poruke serijalizacionim sistemu kako bi je deserijalizovao u Java objekat koji je instanca klase koja se poklapa sa povratnim tipom SEI-ja(service endpoint interfejsa koji u stvari vraa konani rezultat.Kompletiranje poziva SEI-ja vraanjem deserijalizovanog SOAP odgovora.

GeneralnoNa server strani, sistem pozivanja povezuje Java metod sa proxy soap operacijom definisanom WSDL-om.Izvrsava WSDL operaciju pozivanjem Java metoda.Obrnuto, na klijent strani sistem pozivanja povezuje WSDL definisanu SOAP operaciju sa proxy Java iterfejsom.Ceo sistem komunikacije

SerijalizacijaProces transformisanja Java klase u XML elementHostovani unutar web servis kontejnera mogu se nalaziti vie SOAP endpoint-ova gde svaki odgovara grupi web servisa.Dalje svaki takav endpoint ima svoj WSDL interfejs koji definie operacije koje ovaj endpoint izvrava.Endpointovi su apstrakcija za web servis, nain na koji klijent vidi web servisJava & WSDL

Web Service proxy povezuje (binduje) Java interfejs metod sa WSDL operacijom. Proxy je kreiran sistemom pozivanja.On poziva/pokree WSDL operaciju razvijenu na SOAP endpointu slanjem SOAP poruke.Tako da implementacija proksija na web servisu mora da pozove nekakav sistem koji uzima instance com.sales.Customer i com.soabook.purchasing.PurchaseOrder i kreira instancu wrapper:customerPurchase koja se moze ugraditi u telo SOAP poruke.E tu stupa na scenu serijalizacioni sistem.

Uloga serijalizacionog sistema tokom pozivanjaPrimanje parametara od web service proksijaSerijalizovanje oba dva parametara(cust i po ) klaseKombinovanje ova dva elementa i njihovo umotavanje u wrapper klasu wrappper:customerPurchase;Predaja instance wrapper klase Web Service proksiju kako bi se ugradila u SOAP poruku i poslala na SOAP endpointZnai web proxy prosledi parametre za serijalizaciju sistemu za serijalizaciju, serializer ih odradi, umota u wraper klasu I tako vrati proksiju koji zatim alje SOAP endpoint-u porukuMapiranje

Serijalizacioni sistem prevodi parametre(prosleene interfejs proksiju)sa instanci njihovih Java klasa u instance eljene XML Scheme.E ovakva preslikavanja se zovu mapiranjeSerijalizacioni modul primenjuje neku strategiju mapiranjaMaping strategija vezuje Java klasu sa njenom XML Schema i opisom serializera/deserijalizera koji moe da konvertuje XML->Java class I obrnuto

MapiranjeNeki od naina mapiranja:Standard bindingSource code annotationsAlgoritamsko mapiranja su ugraena u algoritme koje izvrava podsistemRule-Based odvojena pravila, kreiraju se I edituju nezavisno od serijalizacionog podsistemaSerijalizacioni kontekst predstavlja set strategija mapiranja koje serijalizacioni sistem moe koristiti da implementira preslikavanja tipova korienih u odreenom web servisu

Razvoj(Deployment)Sistem razvoja obezbeuje alate za podesavanje Java target-a kako bi on bio pozvan kao web servis putem SOAP poruka.Odgovornosti sistema razvoja:Razvoj Java targeta Zavisi od kontejnera gde poziv nastane.Moze da oznai samo pravljenje klasnih definicija Java targeta dostupnim class-loaderu sistema pozivanja (invocation)Mapiranje WSDL operacije(a) na Java targete. Omoguava konfigurisanje web servisa tako da sistem pozivanja moze pravilno da asocira dolazeu SOAP poruku sa njenim Java targetom.Ova informacija o mapiranju je snimljena kao meta podaci kojima sistem pozivanja(invocation) moze da pristupi iz sistema razvoja kako bi odredio koji java target da pozove.

Razvoj(Deployment)Definisanje serijalizacionog konteksta Sistem razvoja konfigurise serijalizacioni podsistem serijalizacionim kontekstom potrebnim za preslikavanje.Objavljivanje WSDL-a Sistem razvoja asocira Java target sa WSDL dokumentom koji sadrzi WSDL operaciju na koju je prikaen target.Ovaj WSDL dokument je dostupan web servis klijentima kao URL ili u drugoj formi na primer unutar UDDI registra.Konfigurisanje SOAP hendlera Ovde spadaju hendleri koje deployment sistem obezbedjuje za pre ili post invokaciju(pozivanje).Iako sistem pozivanja poziva hendlere, oni se zapravo konfigurisu u sistemu razvoja.Ovi hendleri pruaju usluge kao to je autentifikacija,enkripcija podataka i generalno da obezbede sigurnost.Konfigurisanje endpoint osluskivaca(listener-a) Sistem uposljavanja konfigurise kontejner tako da postoji transportni osluskivac za SOAP poruke.

ZakljuakKao to vidimo deployment sistem mora da odradi dosta komplikovanih zadataka kao to su sigurnosni zahtevi, Java/XML Binding,podeavajui endpoint, deployment deskriptori, itd.Platforma web servisa moe da se sastoji od vie kontejnera.U naem sluaju su to application server container Java EE5 i UDDI.Kao to vidimo, svaki od objekata koji je razvijen u kontejneru, zavisi od njegovih container-specific deployment deskriptora.Meutim endpoint listener,SOAP hendleri,i Java target aplikacija mogu biti opisani i u WSDL maping deskriptorima.Znai ceo deployment bukvalno zavisi od deskriptora sa razliitih mesta...Kao na slici -------

JWS u razvoju SOA aplikacijaJWS je u osnovi set tehnologija za korienje i kreiranje web servisa korienjem JaveHipoteticka SOA aplikacija sa narudbenicamaKlijent alje narudbenicu koja ima PO(Purchase order) broj i listu artikala2 podsistema, obrada narudbenice i upravljanje magacinom1.Slanje narudbenice2.Provera validnosti i metoda plaanja3.Vraa se autorizacija i opis eljenih uslova plaanja4.Salje se zahtev magacinu i vraa podatak tipa Item Availibility5.Vraa se odgovor klijentu sa uslovima plaanja i rokom isporukeHipotetika aplikacija

Hipotetika aplikacijaServis obrade narudbine-ulaz PO i lista artikala,izlaz potvrda za artikle i nain plaanja,implementiran u Java EE5Servis upravljanja magacinom ulaz lista artikala,izlaz lista artikala+datumi isporuke,implementiran u .NETCeo na sistem SOA composite 2 dela,2 servisa implementirana u razliitim okruenjimaE sad ceo sistem za upravljanje narudzbenicama je jedan veliki servis.Stoga, koriscenjem SOA, servis se moe sastojati od vise pozadinskih servisa.

JWS olakava SOAAko sistem upravljanja narudbenicama trai potvrdu i metod plaanja od podsistema za obradu narudbenice, mora da zna TANU formu u kojoj da posalje zahtev ovom podsistemuZato interfejs podsistema mora biti lepo definisanTakoe mora da enkapsulira poruku u format koji podsistem razumeU ovom sluaju Web servisi su ti koji omoguavaju da se naprave eljeni interfejsi bez obzira to su platforme razliiteInterfejs svakog servisa na prethodnoj slici je definisan WSDL dokumentom gde su ulazni i izlazni parametri web servisa definisani XML Schem-omServisi komuniciraju slanjem SOAP poruka koje prenose ulazne i izlazne parametre skladno definiciji WSDL-aZnai WSDL da izdefinie interfejs, a SOAP za porukeHTTP GET za traenje interfejsa,,HTTP POST za zahteve i odgovoreSve ovo je nain korienja web frameworka za SOA aplikacije

Neeeeee jo samo malo...

Razvoj i invokacija na Web straniRazvoj i invokacija na strani web servisaPort komponenta upakovani web servis koji se prosleuje Java EE5 kontejneruWeb Service Application(sredina) klase koje implementiraju sami web servisJava parametri i Java return Java objekti parametri/povratne vrednostiXML Parameters i XML return sve to samo u XML formiEndpoint To je URL gde Web Servis prima HTTP GET zahtev sa WSDL definicijom interfejsa ili HTTP POST za razmenu porukaRazvoj i invokacija na strani web servisaEndpoint treba da podri HTTP GET zahteve za slanje WSDL interfejsaStrukturu WSDL definie JAX-WS,JAXB i WS-MetadataJAX-WS anotacije definiu stil WSDL-aJAXB kako se objekti slikaju u XMLWS-Metadata anotacije manipuliu specifinim delovima WSDL interfejsaInvokacioni sistem se pokrece po prijemu SOAP HTTP POST zahtevaEndpoint kao soket,implementiran u servletskoj klasi koja slua na URL adresi,ne programiramo ga mi ve je deo JWS-aJAX-WS izvlai XML Schema definicije is SOAP porukeJAXB deserijalizuje Java parametreZa pozivanje target metoda zaduen je takodje JAX-WSJava EE5 moemo zamisliti kao nekakvo kompletno okruenje koje omoguuje naoj aplikaciji da radi kao web servis

Client-Side Invokacija

Client-side invokacijaGenerisanje SEI-ja(Service Endpoint Interface). Ovo se radi pre kompajliranja klijentske aplikacije jer se definicije interfejsa koriste u klijentskoj aplikacijiU run-time-u kreira se instanca JAX-WS klase javax.xml.ws.Service I ona slui da stvori korisniki pogled na web servis koji se poziva.Dalje Service.getPort pravi instancu SEI-jaZnai, sada smo na klijentskoj strani nekako apstrakovali kako izgleda servis koji je inae na serveruHendler obrauje SOAP zahtev,alje ga Web Servisu.Kad se dobije odgovor, obrauje ga u inverznom smeruNa kraju celog procesa,Proxy instanca(koja inae implementira SEI) vraa objekat kao povratnu vrednostGeneralnoUloga JWS-a je da sakrije kompleksnost platforme, pogotovo procesa razvoja, jer to Java developeru nije vanoDa olaka developerima razvoj web servisaApache AxisApache Axis je open source,Web service framework baziran na XML-u. Sastoji se od Java I C++ implementacije SOAP servera, I razliitih utility programa i API-ja za generisanje i razvoj Web Servis aplikacija. Korienjem Apache Axis, developeri mogu da prave interoperabilne, distribuirane aplikacije.Pri korienju Java Axisa postoje 2 naina na se Java kod pretvori u web servis.Najlaki je korienjem native JWS fajlova.Drugi nain je custom razvoj ukoliko menjamo resurse koji se prikazuju kao web servisJWS ekstenzija sadri Java kod koji treba da se prikae kao web servis.Razlika u odnosu na obini Java fajl je u ekstenzijiTakodje JWS se razvija kao source kod, ne prave se class fajlovi