Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Windows 8
  • Opis wsdl. Ovako izgleda zahtjev za web uslugu

Opis wsdl. Ovako izgleda zahtjev za web uslugu

U ovom ću članku govoriti o tome što je WSDL datoteka, zašto vam je potrebna i kako s njom raditi.

Karta članaka

Što je WSDL

WSDL je jezik za opis web usluge koji ima XML strukturu. Glavna svrha WSDL datoteke je pružiti sučelje za pristup servisnim funkcijama koje vraćaju tipovi podataka; put do poslužitelja koji obrađuje zahtjeve itd.

Put do wsdl datoteke obično je http://host/services/wsdl/gbdar-v2-2.wsdl

Postoji mnogo alata, biblioteka, dizajniranih za čitanje WSDL datoteke.

SapunUi

Jedan takav alat je soapUi(). Instaliranjem distribucije dizajnirane za vašu platformu, moći ćete stvarati novi projekt naredba File/New SoapUi project. U dijaloškom okviru za kreiranje novog projekta ostavite označen okvir Stvori zahtjeve za uzorke

Izvršavanje upita

Novi projekt će automatski generirati predloške zahtjeva za uslugu opisanu u wsdl datoteci. Na lijevoj strani stabla vidjet ćete popis funkcija sadržanih u WSDL datoteci. Proširit ću funkciju replikacije. Unutar njega nalazi se zahtjev Request1, dvostrukim klikom na koji ćemo vidjeti dijaloški okvir s predloškom zahtjeva, umjesto zadanih parametara bit će postavljeni upitnici. Kako bi se funkcija ispravno izvršavala, morate ispuniti sve parametre koji nisu označeni oznakom Optional, a zatim kliknite na zeleni trokut u gornjem lijevom kutu dijaloga.

Ako su svi parametri ispravni, desno će se pojaviti odgovor servisa na zahtjev.

SoapUi pruža mogućnost pregledavanja parametara WSDL datoteke, za to morate dvaput kliknuti na naziv sučelja (označeno zelenom ikonom u stablu WSDL datoteke, imam gdbar-v2-2SOAP). U dijalogu možete pronaći:

  • Tab Pregled - opis opći parametri WSDL, popis funkcija i povezanih radnji poslužitelja
  • Kartica Krajnje točke usluge - put do poslužitelja i ostali parametri
  • .wsdl sadržaj navigacijsko stablo datoteke
  • Sukladnost WS-I - ovdje možete kreirati izvješće WS-I sučelja

Generiranje dokumenata

SoapUi nam omogućuje generiranje dokumentacije za WSDL funkcije. Da biste to učinili, desnom tipkom miša kliknite sučelje i pozovite naredbu Generirajte dokumentaciju. Kao rezultat toga, dobivamo detaljan priručnik u html formatu.

To je sve, pretplatite se na nove unose, ostavite komentare, dajte prijedloge za poboljšanje članka.

Elementi obvezujućeg proširenja koriste se za specificiranje specifične gramatike za dolazne (3) i odlazne (4) poruke, poruke o pogreškama (5). Informacije o razini rada (2) i razini vezivanja (1) također mogu biti naznačene.

Element povezivanja operacije sadrži podatke za istoimenu operaciju srodni tip luka. Međutim, naziv operacije u opći slučaj nije jedinstven (primjer: preopterećenje metoda/funkcija - korištenje istih imena s različitim potpisima), tako da možda neće biti dovoljno za jedinstveno određivanje ciljne operacije tipa priključka. U takvim slučajevima, ciljna operacija se rješava dodatnim navođenjem odgovarajućih naziva elemenata wsdl:input i wsdl:output pomoću atributa name.

Uvezivanje mora postaviti samo jedan protokol.

Uvezivanje ne bi trebalo sadrže informacije o adresi.

Luka

Luka definira zaseban krajnja točka postavljanjem adrese povezivanja.

  1. <wsdl:definicije .... >
  2. <wsdl:servis .... > *
  3. <wsdl:luka name="nmtoken" binding="qname" > *
  4. <-- extensibility element (1) -->
  5. wsdl:luka>
  6. wsdl:servis>
  7. wsdl:definicije>

Atribut name specificira jedinstveni naziv među svim portovima unutar WSDL dokumenta. Atribut vezivanja tipa QName sadrži vezu na vezivanje (pogledajte).

Elementi proširenja (1) služe za postavljanje adrese.

Luka ne treba postaviti više od jedne adrese.

Luka ne treba sadrže bilo kakve obvezujuće informacije osim adrese.

Servis

Usluga spaja skup povezanih priključaka.

  1. <wsdl:definicije .... >
  2. <wsdl:servis name="nmtoken" > *
  3. <wsdl:luka .... /> *
  4. wsdl:servis>
  5. wsdl:definicije>

Atribut imena specificira jedinstveni naziv među svim uslugama definiranim unutar WSDL dokumenta.

Priključci unutar usluge povezani su na sljedeći način:

  • Portovi ne međusobno djeluju (tj. izlaz jednog porta nije ulaz drugog).
  • Ako usluga ima više portova koji dijele zajedničku vrstu porta, ali koriste različita povezivanja ili imaju različite adrese, ti su portovi alternativni. Svaki takav priključak implementira logički ekvivalentno ponašanje (unutar ograničenja prijenosa i formata poruke koje nameće odgovarajuće vezanje). To klijentu omogućuje izbor određena luka za razmjenu na temelju različitih kriterija (podrška transportnog protokola, itd.).
  • Gledajući portove, možete odrediti vrste portova koje usluga podržava. Na temelju tih podataka klijent može odrediti mogućnost interakcije s određenom uslugom. Ovo je korisno ako postoji odnos između operacija iz različiti tipovi portove, a usluga mora podržavati sve potrebne vrste portova kako bi izvršila određeni zadatak.
  1. Ovo je besplatni, djelomični, prošireni prijevod dokumenta Web Services Description Language (WSDL) 1.1 od 15. ožujka 2001.
  2. Izuzetno je nezgodno raditi s nedeklinskim pojmovima napisanim na latinskom, osim toga, oni su nedvosmisleno prevedeni. Stoga se izvorni naziv daje samo kada se uvodi novi pojam, a zatim se u tekstu koristi ruski prijevod.

Predgovor

Kupci kupaca tražili su od kupaca xsd datoteke za strukture koje su proslijedile implementirane web usluge. Kupci su kao odgovor predložili da klijenti kupaca izrade WSDL-ove. Da. neočekivano "iznenada" postalo je potrebno napraviti ne samo xsd sheme za provjeru valjanosti podataka, već "cijele WSDL-ove". Obično se WSDL-ovi koriste za SOAP, a mi imamo REST ...

Prethodno sam pisao o

Uvod

Pojam web-usluga obično se povezuje s uslugama temeljenim na radu ili radnji temeljenim na SOAP ili WS* standardima kao što su WS-Addressing ili WS-Security. Izraz REST web-usluge obično se odnosi na arhitekturu web-usluga temeljenu na resursima koje prenose XML preko HTTP-a. Svaki od ovih arhitektonskih stilova ima svoje mjesto, ali donedavno WSDL standard nije podržavao oba ova stila. WSDL 1.1 HTTP vezanje nije bilo prikladno za opisivanje interakcije koristeći XML putem HTTP-a, tj. nije postojao formalni način za opisivanje REST web usluga pomoću WSDL-a. Objava WSDL 2.0 standarda (koji je razvijen s potrebom da se opiše REST web usluge) kao preporuka širom svijeta Web Consortium (W3C) osigurao je jezik za opisivanje REST web usluga.

REST je arhitektonski stil koji tretira web kao aplikaciju usmjerenu na resurse. Praktično, to znači da je svaki URL u RESTful aplikaciji resurs. URL-ove je lako razumjeti i zapamtiti. Na primjer, knjižara može definirati URL http://www.bookstore.com/books/ za popis knjiga za prodaju i http://www.bookstore.com/books/0321396855/ za detalje o određenoj knjizi s ISBN 0321396855. To je u suprotnosti s aplikacijama usmjerenim na akciju, obično s dugim URL-ovima koje je teško šifrirati i koji opisuju radnje koje treba izvesti, kao što je http://www.bookstore.com/action/query?t=b&id=11117645532&qp =0321396855 . Parametri upita koriste se za odabir traženih podataka. Koristeći primjer knjižare, navođenje parametra subject ograničava temu knjige. Na primjer, fizika ili detektivske priče, ili na primjer URL http://www.bookstore.com/books/?subject=computers/eclipse - zahtjev koji vraća popis knjiga o platformi Eclipse.

Pojam REST skovao je Roy Fielding u svojoj doktorskoj tezi. Hiperveze je promatrao kao sredstvo za promjenu (pohranu) stanja aplikacije. Hiperveze su pohranjene u resursima aplikacije i način su promjene stanja aplikacije, preusmjeravanje iz jednog stanja u drugo. Obično su hiperveze u (X)HTML-u namijenjene ljudskoj uporabi, nisu se koristile u XML-u koji je bio namijenjen strojnoj obradi. Baš kao i (X)HTML, REST web usluge koriste hiperveze u XML-u.

Tradicionalne web aplikacije pristupaju resursima putem HTTP GET ili POST operacija. RESTfull aplikacije rade s resursima u stilu "stvaranja, čitanja, ažuriranja i brisanja (CRUD)". pune mogućnosti HTTP protokol (POST, GET, PUT i DELETE).

Još jedan važna nota o REST aplikaciji: RESTful aplikacije trebaju biti bez stanja. To znači da REST aplikacija ne pohranjuje nikakvo stanje sesije na strani poslužitelja. Sve informacije potrebne za ispunjenje zahtjeva prosljeđuju se u samom zahtjevu. (Dakle, poslužitelj mora odgovoriti na ponovljene zahtjeve na isti način, napomena prevoditelja). Sukladno tome, klijent može predmemorirati primljene resurse, što može značajno ubrzati brzinu aplikacije tamo gdje servis to izričito dopušta. Da biste saznali više o REST-u, pogledajte poveznice na članak.

WSDL i REST

WSDL sadrži sve pojedinosti o web usluzi, uključujući:

    URL web usluge
    Komunikacijski mehanizmi koje web servis razumije
    Operacije koje web servis može izvesti
    Struktura poruke web usluge

Klijenti mogu koristiti navedene detalje za interakciju s uslugom.

WSDL 2.0 proglašen je preporukom W3C-a u lipnju 2007. Ova verzija WSDL standarda izdana je za rješavanje problema u standardu WSDL 1.1, od kojih su mnogi otkriveni organizacija Web Interoperabilnost usluga (WS-I). Osim toga, WSDL 2.0 ima poboljšanu podršku za HTTP povezivanja.

Sam WSDL je XML - podskup koji formalno opisuje web uslugu. Zamislite WSDL opis web usluge kao njen API ugovor s klijentom. WSDL navodi adresu, važeće komunikacijske metode, sučelje i vrste poruka web usluge. Ukratko, WSDL opis sadrži sve informacije koje su klijentu potrebne za korištenje web usluge.

Primjenjivost WSDL-a nadilazi njegovu upotrebu kao API ugovora. Biće formalna definicija, WSDL može koristiti softver koji pojednostavljuje implementaciju web usluga za operacije kao što su:

  • Generacija izvorni kod klijentsku aplikaciju i poslužitelj za web uslugu u različitim programskim jezicima
  • Objavljivanje web usluge
  • Testiranje dinamičke web usluge

Većina softverski alati za rad s web uslugama uključuju podršku za WSDL 1.1. Nedavno je sve veći broj alata za razvoj web usluga koji podržavaju WSDL 2.0. Projekt Apache web usluge sastoji se od dva potprojekta koji trenutno podržavaju WSDL 2.0. Woden je WSDL 2.0 parser temeljen na Javi. Projekt web usluga Apache također nudi XSL (XSLT) WSDL 2.0 transformaciju tzv WSDL 2.0 lijep pisač, koji omogućuje bolju čitljivost WSDL dokumenta ljudima. Axis2 je popularan mehanizam za web usluge (također iz Apachea) koji generira Java kod klijenta i poslužitelja iz WSDL 2.0 dokumenta.

Opisivanje REST web usluge korištenjem WSDL 2.0

Stvarate knjižaru koja ima promovirani URL: http://www.bookstore.com. Već ste kreirali dvije REST web usluge:

  • popis knjiga - usluga prima popis knjiga koje prodajete.
  • detalji knjige - usluga prima informacije o određenoj knjizi.

Odgovor se vraća u XML dokumentima.

Element sučelje definira popis operacija web servisa, uključujući opis ulaza, izlaza i poruka o pogrešci za operacije, kao i redoslijed kojim se prosljeđuju.

Element vezanje definira način komunikacije između klijenta i web servisa. U slučaju REST web usluga, HTTP je naveden kao sredstvo komunikacije.

Servisni element pridružuje adrese web servisa određenim sučeljima (interface) i sredstvima komunikacije (binding). (tj. odgovara URL-u operacije web usluge i elementa vezanje).

Povezivanje popisa knjiga na HTTP

Element vezanje specificira vezanje web usluge na određeni protokol prijenosa podataka. Da biste uslugu popisa knjiga povezali s HTTP-om, trebate navesti vrijednost http://www.w3.org/ns/wsdl/http za atribut tip element vezanje.

Element vezanje može se po želji odnositi na sučelje. Napusti atribut sučelje prazan. Vi ćete ga stvoriti u sljedeći odjeljak. Ako sučelje povezano s vezanje, onda vezanje element može po želji definirati podređeni element operacija, koji je ogledalo za rad sučelja element. Morate izraditi element stub operacija i dovršite vezu operacija kasnije nakon stvaranja sučelje.

Postoje 4 HTTP metode komunikacije

  • IZBRISATI

Usluga popisa knjiga čita zahtjev i radi u skladu s njim s HTTP GET. Postavite GET metodu na operatioin element koristeći atribut metode iz WSDL 2.0 HTTP imenskog prostora. Da biste koristili ovaj atribut, prvo morate definirati prostor imena http://www.w3.org/ns/wsdl/http na elementu opis.

Popis knjiga Usluga uvezivanja definirana je u sljedećem popisu. Navedite sada vezanje u elementu krajnja točka:tns:BookListHTTPBinding.

Usluga popisa knjiga knjižare.

Definicija rada usluge popisa knjiga

Do sada ste naučili kako se obraćati i komunicirati s web servis popisa knjiga. Zatim odredite operaciju usluge popisa knjiga, koja opisuje što usluga popisa knjiga čini.

Dakle, naučili ste kako postaviti adresu i postaviti vezanje (način komunikacije) za web uslugu. Zatim trebate definirati operaciju usluge koja definira što radi web usluga popisa knjiga.

Element sučelja i njegov podređeni radni element koriste se za definiranje servisnih operacija. U slučaju popisa knjiga, definirate jednu operaciju getBookList koja vraća popis knjiga.

Zatim definirajte tri atributa na elementu operacije:

uzorak

Koristi se za određivanje uzorka razmjene poruka obrazac razmjene poruka(MEP) za operaciju. MEP definira redoslijed poruka za operaciju i njihov smjer. U ovom slučaju morate navesti vrijednost http://www.w3.org/ns/wsdl/in-out kako biste naznačili da web usluga prima jednu ulaznu poruku tražeći popis knjiga i šalje jednu izlaznu poruku s popis knjiga. Da biste podržali ovaj MEP, navedite podređene elemente ulazni i izlaz za element operacija. Ovi elementi koriste elemente opisane u XML shemi za definiranje strukture poruka. Pojedinosti u sljedećem odjeljku.

stil

Koristi se za označavanje dodatnih informacija o poslu. Navedite vrijednost http://www.w3.org/ns/wsdl/style/iri , koja nameće ograničenja na sadržaj ulaznih elemenata, kao što je zahtjev da se koriste samo elementi XML sheme.

wsdlx: sigurno

wsdlx:safe: Iz prostora imena WSDL proširenja, ovaj atribut izjavljuje da je ova operacija idempotentna. Ova vrsta operacije ne mijenja resurs i stoga se može pozvati mnogo puta s istim rezultatima. Da biste iskoristili ovaj element, deklarirajte prostor imena WSDL ekstenzija http://www.w3.org/ns/wsdl-extensions na elementu opisa.

Ovaj atribut je iz prostora imena WSDL ekstenzija. Precizira da je operacija idempotentan. Ova operacija ne mijenja resurs, tako da se može pozvati više puta s istim rezultatima. Da biste koristili ovaj element, morate deklarirati WSDL ekstenzije prostora imena http://www.w3.org/ns/wsdl-extensions u korijenskom elementu (elementu opisa).

Možete pronaći unaprijed definirane obrasce razmjene poruka, stilove i definicije wsdlx:safe u WSDL 2.0 Dio 2: Dodaci

U nastavku je definicija usluge popisa knjiga s dodanim opisom sučelje. Nakon dodavanja sučelja, sada možete promijeniti element operacije vezanja da odredite veze na opisano sučelje i operacija.

RESTful HTTP vezanje za uslugu popisa knjiga. Usluga popisa knjiga knjižare.

Definiranje poruka operacije popisa knjiga

Web servis popisa knjiga koristi dvije poruke: ulaznu i izlaznu. Morate opisati strukture ovih poruka kako bi klijentski programi znali što poslati na adresu usluge i što očekivati ​​natrag.

WSDL 2.0 podržava više tipova sustava za opisivanje sadržaja poruke, ali XML shema je jedina koja se koristi. Ovaj odjeljak ne pokriva detalje XML sheme. XML shema se koristi u mnogim drugim aplikacijama, kao što je WSDL 1.1, i postoji mnogo dobrih članaka o njoj. Ovaj odjeljak naglašava kako koristiti XML shemu za REST web uslugu popisa knjiga i kako koristiti dodatne atribute definirane WSDL 2.0 za označavanje atributa sheme.

WSDL 2.0 podržava mnoge sustave definicije tipa, ali u praksi se koristi samo XML shema. Ovaj članak ne ulazi u detalje XML sheme. XML shema se koristi u mnogim drugim aplikacijama kao što je WSDL 1.1, a ima ih mnogo dobri članci o njemu. (). Ovaj odjeljak pokazuje, primjena XML-a shema primijenjena na konkretan primjer OSTATAK usluge popisa knjiga, kao i korištenje dodatnih atributa definiranih u WSDL 2.0 za oznaku atributa sheme.

Da biste opisali 2 poruke za popis knjiga, trebate opisati 2 globalna elementa.

  • getBookList predstavlja ulaznu poruku. Sadrži niz elemenata, uključujući svaki parametar upita dopušten za uslugu: autor, naslov, izdavač, predmet i Jezik. Unutar poruke getBookList mogu se koristiti samo elementi jer je za operaciju sučelja odabran IRI stil.
  • bookList predstavlja izlaznu poruku. Sadrži niz elemenata knjige. Svaki element knjige sadrži atribute naslova i url-a. Atribut naslova je sam po sebi razumljiv. Atribut url poveznica je na uslugu pojedinosti o knjizi, koja se vraća detaljne informacije o određenoj knjizi.

Vaša definicija atributa URL-a zauzvrat koristi 2 atributa iz prostora imena WSDL proširenja. Atributi wsdlx:interface i wsdlx:binding određuju sučelje i vezanje za uslugu. Softver može koristiti ove informacije za automatsko pronalaženje servis. Za korištenje ovih atributa navedite prostor imena WSDL ekstenzija za element shema. Također uključite imenski prostor pojedinosti knjige iz WSDL 2.0 opisa.

XML shema za uslugu popisa knjiga prikazana je u nastavku.

Element zahtjeva za uslugu popisa knjiga. Element odgovora za uslugu popisa knjiga.

Za pozivanje na ulazne i izlazne elemente, morate uvesti shemu u svoj WSDL dokument. Da biste uvezli shemu, upotrijebite element uvoza sheme u odjeljku s vrstama kao što je prikazano na donjem popisu. Osim toga, morate dodati reference na elemente getBookList i Booklist u ulaznim i izlaznim elementima operacije sučelja i dodati prostore imena XML sheme popisa knjiga WSDL korijenskom elementu.

Spremni WSDL za web uslugu popisa knjiga.

Ovo je WSDL 2.0 opis oglednog popisa usluge knjižare za dobivanje informacija o knjizi. Ova operacija vraća popis knjiga. RESTful HTTP vezanje za uslugu popisa knjiga. Usluga popisa knjiga knjižare.

Napomena prevoditelja

Uzeo sam sebi slobodu da ne prevedem sažetak i poveznice. Obojica gledaju autora. u izvornom članku. Moram reći da je izvorni jezik vrlo težak. Međutim, nadam se da je članak od pomoći.

Stranica 2 od 3

Opis s WSDL-om

SOAP radi vrlo dobro kada se zna sve o web usluzi. Međutim, to nije uvijek slučaj. Opis sučelja za pristup web servisu je jezik opisa web servisa (WSDL). Ovaj standard zajednički su razvili IBM, Microsoft i webMethods. Svaka od ove tri tvrtke imala je vlastiti pristup razvoju standarda za opisivanje web usluga: IBM je stvorio NASSL, Microsoft je razvio SCL, a webMethods je osmislio WIDL.

Rezultat njihove suradnje bila je verzija 1.1 WSDLŠto se tiče W3C-a, treba napomenuti da je, baš kao i kod SOAP-a, W3C konzorcij temeljen na verziji 1.1 razvio verziju WSDL 1.2, koja je sada preporuka W3C-a. WSDL opis web usluge sadrži sve informacije potrebne za korištenje usluge, uključujući dostupne metode i njihove postavke. Ove informacije sadržane su u sljedećih pet elemenata:

  • - podržani protokoli.
  • - Poruke web servisa (zahtjev, odgovor).
  • Sve dostupne metode.
  • - URI usluge.
  • - korištene vrste podataka.

Sve ove informacije pohranjene su u korijenskom elementu WSDL opisa. , Donji popis je primjer WSDL opisa web usluge.

WSDL Opis web usluge

Da... ne možete to shvatiti bez čaše, ali ovo je jedna od najjednostavnijih (!) WSDL datoteka. Nažalost, jedan od nedostataka PHP 5 SOAP ekstenzije je da, za razliku od drugih SOAP implementacija, ne dopušta automatsko generiranje WSDL opisa (barem ne još). Taj će problem najvjerojatnije biti riješen u budućoj verziji PHP-a.

Usput!

Za automatsko generiranje WSDL opisa, možete koristiti alternativne implementacije SOAP protokola u PHP-u:

Pretraživanje imenika s UDDI

Sada kada znamo kako dobiti informacije o web-usluzi i kako postaviti upit za nju, moramo naučiti kako pronaći takvu uslugu. Za tu svrhu postoji nešto slično "Žutim stranicama", odnosno UBR (Universal Business Registries - univerzalni poslovni registri) - imenici web servisa.

Postoji nekoliko takvih registara, uključujući one IBM-a, Microsofta, NTT-Coma i SAP-a. Ovi registri sinkroniziraju svoje podatke, tako da možete koristiti bilo koji od njih. Trenutna verzija UDDI standarda je UDDI 3.0, iako većina implementacija koristi verziju 2. Programeri ovog standarda uključuju divove kao što su HP, Intel, Microsoft i Sun.

Za interakciju s UBR-om postoji dvije vrste API-ja: API za upite i API za objavljivanje. Sučelje Inquiry API (Request) služi za postavljanje upita usluge u UBR registrima, te sučelje Publish API omogućuje programerima da registriraju svoje usluge. Čini se da je samo pitanje vremena kada će se sadržaj registara napuniti spamom :)

Usput!

Postoje probni registri dizajnirani za testiranje registracije usluga prije nego što se smjeste u "prave" registre.

Ovako izgleda zahtjev za web uslugu:

poredajPoImenuAsc sortiraj po datumudesc %vodič%

U gornjem primjeru možete vidjeti da je UDDI zahtjev enkapsuliran u SOAP poruci, pa izgleda prilično poznato. Odgovor na zahtjev također je SOAP dokument prikazan u nastavku:

Vođeni obilazak web usluga Primjeri web-usluga za Guided Tourbook Usluga s vodičem za kotacije dionica

Montaža

Instaliranje SOAP proširenja za PHP5 prilično je jednostavno. U sustavu Windows ovaj se modul nalazi u poddirektoriju ext PHP instalacijskog direktorija. Da biste ga koristili, trebate dodati sljedeći redak u datoteku php.ini: proširenje=php_soap.dll Za rad je potreban ovaj modul, koji je standardno uključen u PHP 5, barem u verziji za Windows.

Jednom davno dobio sam zadatak da pokrenem razvoj Web servisa i dali su mi nacrte najjednostavnijeg projekta bez ikakvog objašnjenja. Projekt, naravno, nije krenuo. Što je proljeće i kako funkcionira, ni ja nisam imao pojma. Također nisam mogao pronaći odgovarajuće članke o razvoju web usluga pomoću Springa, ni na ruskom ni na engleskom. Morao sam se sam nositi sa svime, pokazalo se da sve nije tako strašno.
I nedavno sam odlučio vidjeti koje su nove značajke dodane Springu od tada i ažurirati stare usluge, što me kao rezultat potaknulo da napišem ovaj članak.

Ovaj je članak vodič za razvoj jednostavne web usluge koja koristi SOAP protokol koristeći Spring-WS.

I tako, napisat ćemo najjednostavniji servis koji prihvaća korisničko ime i šalje pozdrav i trenutno vrijeme na serveru.

Što će nam trebati?
  • IDE. Koristim eclipse.
Priprema za rad
Stvorite novi projekt web aplikacije. U Eclipsu je: "File => New => Dynamic Web Project".
Projekt sam nazvao: HelloService.
Zatim kopirajte biblioteke iz Spring, XMLBean, wsdl4j, commons-logging u direktorij projekta WEB-INF/lib.
Ako želite, možete ih dodati u knjižnice poslužitelja kako ih ne biste nosili sa svakom aplikacijom.
Stvaranje WSDL sheme
U osnovi, WSDL shema je namijenjena za opisivanje usluge.
Naravno, nećemo ga kreirati ručno. Shemu će automatski generirati Springovi alati, ali više o tome kasnije.
Definirajte ulazne i izlazne podatke
Ulazni podaci:
  • Naziv niza.
Izlaz:
  • Gudački pozdrav;
  • Vrijeme trenutno vrijeme.
Izrađujemo opis ulaznih i izlaznih podataka
U direktoriju WEB-INF kreirajte datoteku HelloService.xsd. Ova datoteka bit će potrebni za generiranje WSDL sheme i stvaranje odgovarajućih Java klasa.
Tekst datoteke:

Atribut targetNamespace- imenski prostor za korištenje. Oni. svi stvoreni objekti bit će smješteni u paketu org.example.helloService.
Elementi ServiceRequest i ServiceResponse opisuju ulazne i izlazne podatke (zahtjev/odgovor).
Atributi minDogađa se i maxDogađa se odrediti broj ponavljanja zadane komponente unutar jednog elementa. Ako ovi parametri nisu navedeni, tada se prema zadanim postavkama smatraju jednakima 1. Za neobaveznu komponentu morate navesti minOccurs=0. S neograničenim brojem komponenti: maxOccurs=unbounded.
Možete pročitati više o XML shemama.
Stvaranje JavaBeansa
Na temelju izrađene sheme izradit ćemo Java klase. Da biste to učinili, izradite datoteku build.xml:

Parametar WS_HOME mora ukazivati ​​na direktorij u kojem se nalazi XMLBeans.
HelloService.xsd- put do stvorene sheme.
lib\helloservice.jar- java biblioteka koja se stvara.

Zatim pokrenite Ant-build (nadam se da ste ga već instalirali).
U Eclipseu ga možete pokrenuti ovako: RMB na datoteku build.xml => Pokreni kao => Ant Build.
Ako kroz naredbeni redak:
ant-buildfile build.xml
Pa čekamo završetak gradnje. Nakon toga možemo provjeriti direktorij projekta WEB-INF\lib za prisutnost odgovarajuće biblioteke (helloservice.jar).

Implementacija usluge
Napravite sučelje i servisnu klasu
Sučelje usluge: HelloService.java:
paket org.example; import java.util.Calendar; javno sučelje HelloService ( javni niz getHello(naziv niza) izbacuje iznimku; javni kalendar getCurrentTime(); )
Implementacija usluge: HelloServiceImpl.java:
paket org.example; import java.util.Calendar; import org.springframework.stereotype.Service; @Service javna klasa HelloServiceImpl implementira HelloService ( public String getHello(String name) baca iznimku ( return "Hello, " + name + "!"; ) public Calendar getCurrentTime() ( return Calendar.getInstance(); ) )
Ovaj kod, mislim, ne treba komentare. Jedina stvar koja može izazvati pitanja kod ljudi koji se prije nisu susreli s Springom je oznaka @ Service. Ali o tome ću govoriti malo kasnije.
krajnja točka
Endpoint - klasa koja će biti odgovorna za obradu dolaznih zahtjeva (neka vrsta ulazne točke).

Stvorite datoteku HelloServiceEndpoint.java:
paket org.example; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ws.server.endpoint.annotation.Endpoint; import org.springframework.ws.server.endpoint.annotation.PayloadRoot; import org.example.helloService.ServiceRequestDocument; import org.example.helloService.ServiceRequestDocument.ServiceRequest; import org.example.helloService.ServiceResponseDocument; import org.example.helloService.ServiceResponseDocument.ServiceResponse; @Endpoint public class HelloServiceEndpoint( private static final String namespaceUri = "http://www.example.org/HelloService"; private HelloService helloService; @Autowired public void HelloService (HelloService helloService) ( this.helloService = helloService; ) @PayloadRoot( localPart = "ServiceRequest", namespace = namespaceUri) public ServiceResponseDocument getService(ServiceRequestDocument request) izbacuje iznimku ( ServiceRequestDocument reqDoc = zahtjev; ServiceRequest req = reqDoc.getServiceRequest(); ServiceResponseDocument respDoc = ServiceResponseDocument.Factory.newInstance(); ServiceResponse resp = respDoc. addNewServiceResponse(); String userName = req.getName(); String helloMessage = testNewService.getHello(userName); Calendar currentTime = testNewService.getCurrentTime(); resp.setHello(helloMessage); resp.setCurrentTime(currentTime); return respDoc; ) )
Što se ovdje radi?
anotacija @krajnja točka samo to određuje dati razredće obraditi dolazne zahtjeve.
namespaceUri– isti prostor imena kao što je naveden prilikom stvaranja xml sheme.

Sada se vratimo malo unatrag i prisjetimo se napomene @ Usluga. Ne ulazeći u detalje da ne preopteretimo čitatelja dodatne informacije, tada ova napomena govori Springu da stvori odgovarajući objekt. I napomenu @Autoožičeni služi za ubrizgavanje automatska zamjena) odgovarajućeg objekta. Naravno, prilikom gradnje jednostavne aplikacije nema smisla koristiti ove napomene, ali odlučio sam da ih neću isključiti u ovom primjeru.

Ostalo, opet, sve bi trebalo biti jasno. Imajte na umu da ServiceRequest, ServiceResponse itd. - ovo su samo klase koje su stvorene na temelju naše xml sheme.

Konfiguracija proljetnog servisa
Ovdje se bliži kraj.
Stvorite datoteku service-ws-servlet.xml.

sws:pokretan komentarima- kaže upravo to in Ovaj projekt koriste se napomene.
I kontekst: skeniranje komponente specificira paket za traženje komentara, uključujući potpakete.

Sljedeće dvije kante uvijek će biti iste. Njihova suština leži u primanju i pretvaranju zahtjeva iz Xml-a u Java objekt i zatim ga pretvaranju natrag.

sws:dinamički-wsdl odgovoran za automatsko generiranje WSDL dokument temeljen na generiranoj XML shemi.
mjesto ukazuje na put do sheme.
lokacijaUri– adresa (u odnosu na spremnik) na kojoj će biti dostupna WSDL shema.
U mom slučaju, WSDL je dostupan na sljedećoj adresi:
localhost/HelloService/HelloService.wsdl

Deskriptor implementacije
I na kraju, posljednji.
U direktoriju WEB-INF mijenjamo ili kreiramo datoteku web.xml.
pozdrav servis pozdrav servis usluga ws org.springframework.ws.transport.http.MessageDispatcherServlet transformWsdlLocations pravi usluga ws /*
Neću više opisivati ​​ovu datoteku, većina bi već trebala znati. Za jednostavne projekte, to se u biti ne bi trebalo mijenjati. Samo je vrijedno napomenuti da naziv servleta (servlet-name) mora odgovarati nazivu Spring konfiguracijske datoteke usluge usluga ws-servlet.xml.
Provjera zdravlja
Prvi znak ispravan rad je generirana WSDL shema.
Da biste provjerili, samo idite na adresu ove sheme (http://localhost/HelloService/HelloService.wsdl) i pogledajte: tamo bi trebala biti prikazana xml datoteka. Ako se ništa ne prikaže ili se pojavila kakva greška, pažljivo ponovno čitamo cijeli članak i tražimo što smo pogriješili.

Za daljnju provjeru potreban nam je soapUI (imam verziju 3.0.1).
Instalirajte ga i pokrenite.
Napravite novi projekt: File => New soapUI Project. U polje Initial WSDL/WADL umetnite vezu na WSDL shemu (http://localhost/HelloService/HelloService.wsdl).
U kreiranom projektu otvorite traženi zahtjev.

U polje Ime unesite ime i kliknite na gumb "Pošalji zahtjev".


Kao rezultat toga, od poslužitelja dobivamo odgovor s pozdravom i trenutnim vremenom.


Ako je nešto pošlo po zlu, ponovno pročitajte ovaj članak.

Što je sljedeće?
Pa, onda moramo napisati klijenta za ovu web uslugu. Ali ovo je već materijal za drugi članak, koji će možda biti napisan kasnije, ako će ovaj materijal nekoga zanimati.

Najpopularniji povezani članci