JAX-WS podpira spletne storitve na osnovi SOAP. Drugi del te štiridelne serije o spletnih storitvah Java SE opredeljuje spletno storitev za pretvorbo enot na osnovi SOAP, gradi in nato lokalno preverja to spletno storitev prek privzetega lahkega strežnika HTTP (obravnavano v 1. delu), razlaga dokument WSDL storitve in dostopa do storitve od preprostega odjemalca.
Določitev spletne storitve za pretvorbo enot
Spletna storitev za pretvorbo enot, ki sem jo poimenoval UC, je sestavljena iz štirih funkcij za pretvorbo med centimetri in palci ter med stopinjami Fahrenheita in stopinjami Celzija. Čeprav bi ta primer lahko oblikovali kot en sam razred Java, sem se odločil slediti najboljšim praksam, tako da sem ga zasnoval kot vmesnik Java in razred Java. Seznam 1 predstavlja spletne storitve UC
vmesnik.
Seznam 1. Vmesnik končne točke storitve spletne storitve UC
paket ca.javajeff.uc; uvoz javax.jws.WebMethod; uvoz javax.jws.WebService; @WebService javni vmesnik UC {@WebMethod double c2f (dvojne stopinje); @WebMethod dvojni cm2in (dvojni cm); @WebMethod dvojni f2c (dvojne stopinje); @WebMethod dvojno in2 cm (dvojno); }
UC
opisuje a Vmesnik končne točke storitve (SEI), ki je vmesnik Java, ki razkriva delovanje vmesnika spletne storitve v smislu abstraktnih metod Java. Stranke komunicirajo s spletnimi storitvami, ki temeljijo na SOAP, prek svojih SEI.
UC
je razglašen za SEI prek @WebService
pripis. Ko je vmesnik ali razred Java označen @WebService
, vse javnosti
metode, katerih parametri, vrnjene vrednosti in deklarirane izjeme sledijo pravilom, opredeljenim v oddelku 5 specifikacije JAX-RPC 1.1, opisujejo operacije spletnih storitev. Ker samo javnosti
metode je mogoče prijaviti v vmesnikih, javnosti
pridržana beseda pri prijavi ni potrebna c2f ()
, cm2in ()
, f2c ()
, in in2cm ()
. Te metode so implicitno javnosti
.
Vsaka metoda je tudi označena @WebMethod
. Čeprav @WebMethod
v tem primeru ni bistvenega pomena, njegova prisotnost krepi dejstvo, da označena metoda razkrije delovanje spletne storitve.
Seznam 2 predstavlja spletne storitve UCImpl
razred.
Seznam 2. Uvod za uvajanje storitve storitve UC Web Bean
paket ca.javajeff.uc; uvoz javax.jws.WebService; @WebService (endpointInterface = "ca.javajeff.uc.UC") javni razred UCImpl izvaja UC {@Override public double c2f (dvojne stopinje) {povratne stopnje * 9,0 / 5,0 + 32; } @Override public double cm2in (double cm) {return cm / 2.54; } @Override public double f2c (dvojne stopinje) {return (stopinje - 32) * 5.0 / 9.0; } @Override public double in2cm (double in) {vrnitev v * 2,54; }}
UCImpl
opisuje a Bean za izvajanje storitve (SIB), ki zagotavlja izvajanje SEI. Ta razred je razglašen za SIB prek @WebService (endpointInterface = "ca.javajeff.uc.UC")
pripis. The endpointInterface
element poveže ta SIB s svojo SEI in se je treba izogniti nedefiniranim napakam tipa vrat pri zagonu odjemalske aplikacije, predstavljene pozneje.
The izvaja UC
klavzula ni nujno potrebna. Če ta klavzula ni prisotna, UC
vmesnik se prezre (in je odveč). Vendar je dobro, da to obdržite izvaja UC
tako da lahko prevajalnik preveri, ali so metode SEI implementirane v SIB.
Glave metode SIB niso označene @WebMethod
ker se ta pripis običajno uporablja v kontekstu SEI. Če pa bi morali dodati javnosti
(ki ustreza pravilom iz oddelka 5 specifikacije JAX-RPC 1.1) SIB in če ta metoda ne izpostavi operacije spletne storitve, bi označili glavo metode @WebMethod (izključi = resnično)
. Z dodelitvijo prav
do @WebMethod
je izključi
element, preprečite, da bi bila ta metoda povezana z operacijo.
Ta spletna storitev je pripravljena za objavo, tako da lahko do nje dostopajo stranke. Seznam 3 predstavlja a UCPublisher
program, ki to nalogo opravi v okviru privzetega lahkega strežnika HTTP.
Seznam 3. Objavljanje UC
uvoz javax.xml.ws.Endpoint; uvoz ca.javajeff.uc.UCImpl; javni razred UCPublisher {public static void main (String [] args) {Endpoint.publish ("// localhost: 9901 / UC", new UCImpl ()); }}
Objava spletne storitve vključuje en sam klic na EndPoint
razredov Objava končne točke (naslov niza, izvajalec predmeta)
razredna metoda. The naslov
parameter identificira URI, dodeljen spletni storitvi. To spletno storitev sem objavil na lokalnem gostitelju z navedbo lokalni gostitelj
(kar ustreza naslovu IP 127.0.0.1) in številko vrat 9901
(ki je najverjetneje na voljo). Prav tako sem samovoljno izbral / UC
kot pot objave. The izvajalec
parameter identificira primerek UC
je SIB.
The objavi ()
metoda ustvari in objavi končno točko za določeno izvajalec
predmet na danem naslov
, in uporablja izvajalec
pripombe za ustvarjanje dokumentov z definicijo jezikov spletnih storitev (WSDL) in XML Schema. Zaradi izvajanja JAX-WS na podlagi neke privzete konfiguracije ustvari in konfigurira potrebno strežniško infrastrukturo. Poleg tega ta metoda povzroči, da aplikacija deluje neomejeno dolgo. (V računalnikih z Windows hkrati pritisnite tipki Ctrl in C, da končate aplikacijo.)
Izdelava in preverjanje spletne storitve
Ni težko zgraditi predhodno definirane spletne storitve UC. Najprej morate ustvariti primerno strukturo imenikov, ki vsebuje ustrezne datoteke. To nalogo izvedite z naslednjimi koraki:
- V trenutnem imeniku ustvarite datoteko
ca.
imenik. Znotrajca.
, ustvaritijavajeff
imenik. Končno, znotrajjavajeff
, ustvaritiuc
imenik. - Kopirajte seznam 1 v a
UC.java
izvorno datoteko in jo shranite vca / javajeff / uc
. - Kopirajte seznam 2 v a
UCImpl.java
izvorno datoteko in jo shranite vca / javajeff / uc
. - Kopirajte seznam 3 v a
UCPublisher.java
izvorno datoteko in jo shranite v trenutni imenik, ki vsebujeca.
imenik.
Naslednja naloga je sestaviti te izvorne datoteke. Ob predpostavki, da niste spremenili imenikov, izvedite naslednji ukaz za prevajanje teh izvornih datotek v Java SE 9 (izpustite --add-moduli java.xml.ws
v Javi SE 6, 7 ali 8):
javac --add-module java.xml.ws UCPublisher.java
Če se te izvorne datoteke uspešno prevedejo, izvedite naslednji ukaz za zagon te aplikacije v Javi 9 (izpustite --add-moduli java.xml.ws
v Javi SE 6, 7 ali 8):
java --add-module java.xml.ws UCPublisher
Medtem ko se aplikacija izvaja, s spletnim brskalnikom preverite, ali ta spletna storitev deluje pravilno, in za dostop do njenega dokumenta WSDL. Zaženite svoj najljubši spletni brskalnik in v naslovno vrstico vnesite naslednjo vrstico:
// localhost: 9901 / UC
Slika 1 prikazuje nastalo spletno stran v spletnem brskalniku Google Chrome.
Slika 1. Spletna stran UC ponuja podrobne informacije o objavljeni spletni storitvi
Slika 1 predstavlja kvalificirano storitev in imena vrat končne točke spletne storitve. (Opazite, da je bilo ime paketa obrnjeno - uc.javajeff.ca
namesto ca.javajeff.uc
). Naročnik uporablja ta imena za dostop do storitve.
Na sliki 1 je prikazan tudi naslov URI spletne storitve, lokacija dokumenta WSDL spletne storitve (URI spletne storitve, ki je pripona ? wsdl
poizvedbeni niz) in ime paketa, ki izpolnjuje pogoje za izvedbeni razred spletne storitve.
Tolmačenje dokumenta WSDL spletne storitve
Lokacija dokumenta WSDL spletne storitve UC je predstavljena kot povezava. Kliknite to povezavo za ogled dokumenta WSDL, katerega vsebina je predstavljena na seznamu 4.
Seznam 4. UC-jev dokument WSDL
A Dokument WSDL je dokument XML z opredelitve
root element, zaradi česar dokument WSDL ni nič drugega kot nabor definicij. Ta element vključuje različne xmlns
atribute za prepoznavanje različnih standardnih imenskih prostorov, skupaj z targetNameSpace
in ime
lastnosti:
- The
targetNamespace
atribut ustvari imenski prostor za vse uporabniško določene elemente v dokumentu WSDL (kot jec2f
element, definiran preksporočilo
element s tem imenom). Ta imenski prostor se uporablja za razlikovanje med uporabniško določenimi elementi trenutnega dokumenta WSDL in uporabniško določenimi elementi uvoženih dokumentov WSDL, ki so identificirani prek WSDL-jevuvoz
element. Na podoben način jetargetNamespace
atribut, ki se prikaže v datotekah, ki temeljijo na shemi XMLshemo
element ustvari imenski prostor za svoje uporabniško določene preproste elemente tipa, elemente atributov in zapletene elemente tipa. - The
ime
atribut identificira spletno storitev in se uporablja samo za dokumentiranje storitve.
Vgnezdeno znotraj opredelitve
so vrste
, sporočilo
, portType
, zavezujoča
, in storitev
elementi: