Web usluge u Java SE, 1. dio: Pregled alata

Java Standard Edition (SE) 6 uključuje podršku za web usluge. Ovaj post započinje četverodijelnu seriju o web uslugama na Java SE objašnjavajući što su web usluge i pregledavajući podršku Java SE za njih. Budući postovi koristit će ovu podršku za izgradnju web usluga temeljenih na SOAP-u i RESTful-u, a pokrivat će i teme naprednih web-usluga.

Java XML i JSON

U ovoj seriji pretpostavljam da razumijete XML i JSON. Ako ne, možda biste htjeli pogledati moju knjigu o Java XML-u i JSON-u , koja je oglašena na kraju ovog posta.

Što su web usluge?

Wikipedia definira web uslugu kao "softverski sustav dizajniran da podrži interoperabilnu interakciju stroj-stroj preko mreže". Detaljnija definicija može se dobiti definiranjem dijelova ovog pojma:

  • Web: ogromna međusobno povezana mreža resursa, gdje je resurs izvor podataka pod nazivom Uniform Resource Identifier (URI), kao što je dokument zasnovan na PDF-u, video stream, web stranica ili čak aplikacija. Ovim se resursima može pristupiti pomoću standardnih internetskih protokola kao što su HyperText Transfer Protocol (HTTP) ili Simple Mail Transfer Protocol (SMTP).
  • Usluga: Aplikacija ili softverska komponenta zasnovana na poslužitelju koja klijentima izlaže resurs razmjenom poruka prema obrascu razmjene poruka (MEP). MEP zahtjeva i odgovora je tipičan.

S obzirom na ove definicije, web usluga je aplikacijska / softverska komponenta zasnovana na poslužitelju koja klijentima izlaže mrežni resurs razmjenom poruka. Te se poruke mogu formatirati u skladu s proširivim jezikom za označavanje (XML) ili JavaScript objektom (JSON). Također, ove se poruke mogu smatrati pozivanjem na funkcije web usluga i primanjem rezultata pozivanja. Slika 1 ilustrira ovu razmjenu poruka.

Slika 1. Klijent pristupa resursu razmjenom poruka s web uslugom

Tvrtke i web usluge

Tvrtke koriste web usluge jer prevladavaju tradicionalne probleme međuopreme (npr. Skupe za dobivanje i održavanje, nesposobne za komunikaciju sa pozadinskim softverom i klijentskim aplikacijama putem Interneta i nefleksibilne) temeljeći se na besplatnim i otvorenim standardima, svojom održivošću, uključivanjem webu i fleksibilnošću. Nadalje, pomažu većim tvrtkama da sačuvaju svoja često značajna ulaganja u naslijeđeni softver.

Web usluge mogu se klasificirati kao jednostavne ili složene. Jednostavne web usluge ne komuniciraju s drugim web uslugama (npr. Samostalna aplikacija zasnovana na poslužitelju s jednom funkcijom koja vraća trenutno vrijeme za određenu vremensku zonu). Suprotno tome, složene web usluge često komuniciraju s drugim web uslugama. Na primjer, generalizirana web usluga društvene mreže može komunicirati s Twitter i Facebook web uslugama kako bi klijentu pribavila i vratila sve Twitter i sve Facebook informacije za određenog pojedinca. Složene web usluge poznate su i pod nazivom mashup, jer zbijaju (kombiniraju) podatke s više web usluga.

Uslužno orijentirana arhitektura

Web usluge su implementacija uslužno orijentirane arhitekture (SOA) , što je stil dizajna softvera gdje se usluge pružaju različitim softverskim komponentama putem komunikacijskog protokola preko mreže. Zamislite SOA kao skup principa dizajna ili okvir za implementaciju poslovne logike kao usluge za višekratnu upotrebu koje se mogu kombinirati na različite načine kako bi se zadovoljili novi poslovni zahtjevi.

Web usluge temeljene na SOAP-u

SOAP-based web-usluga je naširoko koristi web servis kategorija koja se temelji na SOAP , XML jezik za definiranje poruka (sažetak funkcija prizivanja ili odgovore) koji se može shvatiti oba kraja mrežne veze. Razmjena SOAP poruka naziva se operacijom koja odgovara pozivu funkcije i njenom odgovoru i koja je prikazana na slici 2.

Slika 2. Operacija web usluge uključuje ulazne i izlazne poruke

Povezane operacije često se grupiraju u sučelje , koje je konceptualno slično Java sučelju. Obvezujući pruža konkretne pojedinosti o tome kako sučelje vezan uz protokol poruka (osobito SOAP) za komunikaciju naredbe, kodove pogrešaka i druge predmete preko žice. URI vezanja i mrežne adrese (IP adresa i priključak) poznat je kao krajnja točka , a zbirka krajnjih točaka je web usluga . Slika 3 prikazuje ovu arhitekturu.

Slika 3. Sučeljima operacija moguće je pristupiti preko krajnjih točaka

SOAP se često koristi s jezikom opisa web usluga (WSDL, izgovara se whiz-dull) , XML jezikom za definiranje operacija web usluga. WSDL dokument je formalni ugovor između SOAP-based web-usluge i njezinih klijenata, pružajući sve podatke o interakciji s web-uslugom. Ovaj vam dokument omogućuje grupiranje poruka u operacije i radnje u sučeljima. Također vam omogućuje definiranje vezanja za svako sučelje, kao i adresu krajnje točke.

Uz podršku WSDL dokumenata, web usluge temeljene na SOAP-u imaju i sljedeća svojstva:

  • Sposobnost rješavanja složenih nefunkcionalnih zahtjeva kao što su sigurnost i transakcije: Ti su zahtjevi dostupni putem različitih specifikacija. Kako bi se promovirala interoperabilnost među ovim specifikacijama, osnovana je Organizacija za interoperabilnost web usluga (WS-I) (industrijski konzorcij). WS-I je uspostavio skup profila, gdje je profil skup imenovanih specifikacija web usluga na određenim razinama revizije, zajedno sa skupom smjernica za implementaciju i interoperabilnost koji preporučuju kako se specifikacije mogu koristiti za razvoj interoperabilnih web usluga. Na primjer, prvi profil, WS-I Basic Profile 1.0 , sastoji se od sljedećeg skupa neovlaštenih specifikacija web usluga:
  • SAPUN 1.1
  • WSDL 1.1
  • Univerzalni opis Otkrivanje i integracija (UDDI) 2.0
  • XML 1.0 (drugo izdanje)
  • XML shema 1. dio: Strukture
  • XML shema 2. dio: Tipovi podataka
  • RFC2246: Transportni sloj sigurnosnog protokola verzija 1.0
  • RFC2459: Potvrda o infrastrukturi javnih ključeva Interneta X.509 i CRL profil
  • RFC2616: HyperText Transfer Protocol 1.1
  • RFC2818: HTTP preko TLS-a
  • RFC2965: Mehanizam upravljanja HTTP-om
  • Protokol sloja sigurnih utičnica verzija 3.0

Dodatni primjeri profila uključuju WS-I Basic Security Profile i Simple SOAP Binding Profile. Za više informacija o tim i drugim profilima posjetite web mjesto WS-I. Java SE podržava WS-I Basic Profile.

  • Sposobnost asinkrone interakcije s web-uslugom: Klijenti web-usluga trebali bi biti u mogućnosti interakcije s web-uslugom na neblokirajući, asinkroni način. Podrška asinkronog pozivanja na strani klijenta za rad web usluga pruža se u Java SE.

Web usluge temeljene na SOAP-u izvršavaju se u okruženju koje uključuje tražitelja usluga (klijenta), davatelja usluga i brokera usluga. Ovo okruženje prikazano je na slici 4.

Slika 4. Web usluga temeljena na SOAP-u uključuje zahtjevnika usluga, davatelja usluga i posrednika usluga (npr. UDDI)

Podnositelj zahtjeva za uslugu, obično klijentska aplikacija (npr. Web preglednik) ili možda neka druga web usluga, prvo locira davatelja usluga na neki način. Na primjer, podnositelj zahtjeva za uslugu može WSDL dokument poslati posredniku usluga, koji odgovara drugim WSDL dokumentom koji identificira mjesto davatelja usluga. Podnositelj zahtjeva zatim komunicira s davateljem usluga putem SOAP poruka.

Davatelji usluga trebaju biti objavljeni kako bi ih drugi mogli pronaći i koristiti. U kolovozu 2000. pokrenuta je otvorena industrijska inicijativa poznata kao Univerzalni opis, otkriće i integracija (UDDI) kako bi se tvrtkama omogućilo objavljivanje popisa usluga, međusobno otkrivanje i definiranje interakcije usluga ili softverskih aplikacija putem Interneta. Međutim, ovaj registar zasnovan na XML-u neovisan o platformi nije široko prihvaćen i trenutno se ne koristi. Mnogi su programeri smatrali da je UDDI pretjerano kompliciran i da mu nedostaje funkcionalnost te su se odlučili za alternative poput objavljivanja podataka na web mjestu. Na primjer, Google je svoje javne web usluge (npr. Google Maps) jednom učinio dostupnim na //code.google.com/more/.

SOAP poruke koje se premještaju između tražitelja usluga i davatelja usluga često se ne vide, a prosljeđuju se kao zahtjevi i odgovori između SOAP knjižnica njihovih stogova protokola web usluga. Međutim, tim je porukama moguće pristupiti izravno, kao što ćete otkriti kasnije u ovoj seriji.

Velike web usluge

Web usluge temeljene na SOAP-u poznate su i kao velike web usluge jer se temelje na mnogim specifikacijama, poput prethodno spomenutih WS-I profila.

ODMORNE web usluge

Web usluge temeljene na SOAP-u mogu se isporučivati ​​putem protokola kao što su HTTP, SMTP, FTP i Blocks Extensible Exchange Protocol (BEEP). Isporuka SOAP poruka putem HTTP-a može se smatrati posebnom vrstom RESTful web usluge.

RESTful web servis je naširoko koristi web kategorije usluga koja se temelji na predstavljačkim Država Transfer (odmora) , softverska arhitektura stil za distribuirane hipermedijskih sustava (sustava u kojima su slike, tekst i druge resurse koji se nalaze oko mreže i koji su dostupni putem hiperveza) . Hipermedijski sustav od interesa u kontekstu web usluga je World Wide Web.

OSTALO povijest

Roy Fielding (glavni autor verzije HTTP specifikacije 1.0 i 1.1 i suosnivač Apache Software Foundation) uveo je i definirao REST u svojoj doktorskoj disertaciji još 2000. Fielding je REST zamislio kao arhitektonski stil Mreže, iako je napisao to je bilo dugo nakon što je Web bio neprekidna djelatnost. REST se široko smatra rješenjem za sve ono što se smatra sve većom složenošću web usluga temeljenih na SOAP-u.

Središnji dio REST-a je resurs koji se može identificirati putem URI-ja. REST identificira resurse prema njihovim višenamjenskim proširenjima internetske pošte (MIME) (kao što je text / xml). Također, resursi imaju stanja koja su zarobljena njihovim predstavništvima. Kad klijent zatraži resurs od web-usluge RESTful, usluga klijentu šalje MIME-upisani prikaz resursa.

Klijenti koriste HTTP-ove glagole POST, GET, PUT i DELETE za dohvaćanje prikaza resursa i za manipulaciju resursima. REST preslikava ove glagole na operacije kreiranja, čitanja, ažuriranja i brisanja (CRUD) baze podataka, kako slijedi:

  • POST: Stvorite novi resurs na temelju podataka zahtjeva.
  • GET: Pročitajte postojeći resurs bez stvaranja nuspojava (nemojte mijenjati resurs).
  • PUT: Ažurirajte postojeći resurs podacima podataka.
  • BRISANJE: Izbrišite postojeći resurs.

Nakon svakog glagola slijedi URI koji identificira resurs. (Ovaj neizmjerno jednostavan pristup u osnovi je nespojiv sa SOAP-ovim pristupom slanja kodiranih poruka na jedan resurs.) URI se može odnositi na zbirku, kao što je //javajeff.ca/libraryili na element kolekcije, kao što je //javajeff.ca/library/9781484219157- ovi URI su samo ilustracije.

Za POST i PUT zahtjeve, podaci o resursima temeljeni na XML-u prenose se kao tijelo zahtjeva. Na primjer, mogli biste protumačiti POST //javajeff.ca/library HTTP/ 1.1(gdje HTTP/ 1.1opisuje HTTP verziju podnositelja zahtjeva) kao zahtjev za umetanje POSTXML podataka u //javajeff.ca/libraryresurs zbirke.

Za zahtjeve GET i DELETE podaci se obično prosljeđuju kao nizovi upita, pri čemu je niz upita onaj dio URI-a koji započinje ?znakom. Na primjer, tamo gdje GET //javajeff.ca/librarybi mogao vratiti popis identifikatora za sve knjige u libraryresursu, GET //javajeff.ca/library?isbn=9781484219157vjerojatno bi se vratio prikaz resursa knjige čiji niz upita identificira Međunarodni standardni broj knjige (ISBN) 9781484219157.

Saznajte više o preslikavanjima HTTP-CRUD-a

Za cjelovit opis preslikavanja između HTTP glagola i njihovih CRUD kolega, pogledajte tablicu "RESTful HTTP metode web usluge" u Wikipedijinu unosu Reprezentativnog prijenosa države.

REST se također oslanja na HTTP standardne kodove odgovora, kao što su 404 (traženi resurs nije pronađen) i 200 (operacija resursa uspješna), zajedno s MIME vrstama (kada se dohvaćaju prikazi resursa).

RESTful u odnosu na velike web usluge

Ako se pitate hoćete li razviti web uslugu pomoću SOAP-a ili REST-a, pogledajte RESTful Web Services vs "Big" Web Services: Donošenje ispravne arhitektonske odluke.

Podrška za web usluge u Java SE

Prije Jave SE 6, web usluge temeljene na Javi razvijale su se isključivo s Java Enterprise Edition (EE) SDK. Iako je Java EE poželjna za razvoj web usluga iz proizvodne perspektive, jer poslužitelji temeljeni na Java EE pružaju vrlo visok stupanj skalabilnosti, sigurnosnu infrastrukturu, uređaje za nadzor i tako dalje, opetovano postavljanje web usluge na Java EE kontejner često oduzima vrijeme, usporavajući razvoj. Java SE 6 pojednostavio je i ubrzao razvoj web usluga dodavanjem API-ja, napomena, alata i laganog HTTP poslužitelja (za postavljanje web usluga na jednostavan web poslužitelj i njihovo testiranje u ovom okruženju) u svoju jezgru.

Apis

Java SE nudi nekoliko API-ja koji podržavaju web usluge. Uz razne JAXP API-je (SAX, DOM, StAX itd.) O kojima raspravljam u Java XML-u i JSON-u , Java SE nudi JAX-WS, JAXB i SAAJ API-je: