Programiranje

Spletne storitve v Java SE, 2. del: Ustvarjanje spletnih storitev SOAP

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 @WebMethodje 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 UCje SIB.

The objavi () metoda ustvari in objavi končno točko za določeno izvajalec predmet na danem naslov, in uporablja izvajalecpripombe 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:

  1. V trenutnem imeniku ustvarite datoteko ca. imenik. Znotraj ca., ustvariti javajeff imenik. Končno, znotraj javajeff, ustvariti uc imenik.
  2. Kopirajte seznam 1 v a UC.java izvorno datoteko in jo shranite v ca / javajeff / uc.
  3. Kopirajte seznam 2 v a UCImpl.java izvorno datoteko in jo shranite v ca / javajeff / uc.
  4. Kopirajte seznam 3 v a UCPublisher.java izvorno datoteko in jo shranite v trenutni imenik, ki vsebuje ca. 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 je c2f element, definiran prek sporoč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-jev uvoz element. Na podoben način je targetNamespace atribut, ki se prikaže v datotekah, ki temeljijo na shemi XML shemo 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:

$config[zx-auto] not found$config[zx-overlay] not found