Crearea unui serviciu web de săpun, primăvară în limba rusă!

Această lecție evidențiază crearea pas cu pas a unui server de servicii web SOAP utilizând Spring.

Ce vei crea?

Veți crea un server care furnizează date din diferite țări europene utilizând serviciul web WSDL SOAP.

Pentru simplitate de exemplu, veți utiliza date fixe din Regatul Unit, Spania și Polonia.

Ce ai nevoie

Cum să treci această lecție

Ca cele mai multe clase de primăvară, puteți începe de la zero și să faceți fiecare pas sau să săriți pașii de bază pe care îi cunoașteți deja. Oricum, vei termina cu un cod de lucru.

Când ați terminat. Puteți compara rezultatul rezultat cu eșantionul în gs-producing-web-service / complete.

Configurarea proiectului

În primul rând, trebuie să configurați un script de bază. Puteți utiliza orice sistem de construire pe care vă place să construiți proiecte de primăvară, dar în această lecție, luați în considerare codul pentru lucrul cu Gradle. Dacă nu sunteți familiarizați cu aceasta, verificați lecția corespunzătoare. Construirea unui proiect Java folosind Gradle.

Crearea unei structuri de directoare

În directorul de proiect pe care l-ați selectat, creați următoarea structură de directoare; de exemplu, cu comanda mkdir -p src / main / java / hello pentru sistemele * nix:

Crearea unui fișier de construcție Gradle

Mai jos este fișierul inițial de construire Gradle. Dacă utilizați programul Spring Tool Suite (STS). puteți importa o lecție direct din ea.

Dacă te uiți la pom.xml. veți găsi că este specificată versiunea pentru maven-compiler-plugin. În general, acest lucru nu este recomandat. În acest caz, este conceput pentru a rezolva probleme cu sistemul nostru CI, care implicit are o versiune veche (înainte de versiunea Java 5) a acestui plugin.

Pluginul Plugin Plugin Plugin oferă multe caracteristici convenabile:

  • Colectează toate borcanele în clasă și colectează un "über-jar" unic, executabil, ceea ce îl face mai convenabil să execute și să vă livreze serviciul
  • Se caută metoda public void static (), ca semn al clasei executabile
  • Acesta oferă o rezoluție de dependență încorporată, cu numere de versiune specifice pentru dependențele de primăvară corespunzătoare. Puteți să înlocuiți toate versiunile pe care le doriți, dar va fi implicit pentru Boot de setul de versiuni selectat

Adăugarea unei dependențe Spring-WS

Proiectul pe care l-ați creat ar trebui să includă dependențele spring-ws-core și wsdl4j în fișierul dvs. de asamblare.

Crearea unei scheme XML pentru determinarea domeniului

Domeniul de servicii web este descris în fișierul de schemă XML (XSD) pe care Spring-WS îl va exporta automat ca WSDL.

Creați un fișier XSD cu operațiuni pentru returnarea numelui. populație. capital și valută.

Generarea de clase de domenii pe baza schemei XML

Următorul pas este generarea de clase Java din fișierul XSD. Abordarea corectă este crearea automată a acestora în procesul de asamblare folosind pluginul maven sau gradle.

Configurația pluginului pentru Maven:

Clasele generate vor fi plasate în directorul target / generated-sources / jaxb /.

Același lucru este valabil și pentru grală:

Următorul pas este să adăugați sarcina getJaxb. grătarul necesar pentru generarea de clase Java:

pentru că grala nu are un plugin JAXB (încă), include o sarcină furnică care face fișierul de construire un pic mai complicat decât fișierul de asamblare Maven.

În ambele cazuri, procesul de generare a obiectelor este inclus în ciclul de viață al clădirii, deci nu sunt necesare pași separați pentru a începe acest proces.

Crearea unui depozit

Pentru a furniza date serviciului web, creați un depozit. În această lecție, creați un depozit simplu cu setul de date.

Creați un punct de ieșire pentru servicii

Pentru a crea un punct de ieșire al serviciului, aveți nevoie doar de un POJO cu mai multe adnotări Spring WS pentru a procesa cererile de primire SOAP.

@Endpoint înregistrează clasa Spring WS ca potențial candidat pentru manipularea mesajelor SOAP primite

@PayloadRoot utilizează Spring WS pentru a selecta o metodă de manipulare pe baza spațiului de nume și a mesajelor localPart

@RewuestPayload indică faptul că mesajul primit va fi mapat la parametrul de cerere al metodei

@ResponsePayload creează valoarea corespunzătoare valorii returnate a părții utile a răspunsului.

În toate aceste fragmente de cod, clasele io.spring.guides vor elimina o eroare de compilare în IDE până când executați sarcina generării de clase de domenii bazate pe WSDL.

Configurarea coșurilor de servicii Web

Creați o nouă clasă asociată configurației de primăvară WS Bin:

  • Spring WS utilizează un alt tip de servlet pentru a gestiona mesajele SOAP: MessageDispatcherServlet. Este important pentru implementarea și instalarea aplicației Context în ea. Fără aceasta, Spring WS nu va detecta în mod automat coșurile de primăvară
  • Apelarea acestui recipient ca dispecerServlet. înlocuiește în mod prestabilit Dispozitivul de primăvară pentru boot de primăvară
  • DefaultMethodEndpointAdapter configurează adnotările Spring WS pentru modelul de programare. Acest lucru face posibilă utilizarea de adnotări diferite, cum ar fi @Endpoint. menționat mai devreme
  • DefaultWsdl11Definition oferă un standard WSDL 1.1 utilizând XsdSchema

Creați o executabilă a aplicației

În ciuda faptului că pachetul acestui serviciu poate face parte din fișierele de aplicații web și de fișiere WAR, abordarea mai simplă prezentată mai jos creează o aplicație autonomă separată. Împachetați totul într-un singur fișier executabil JAR care rulează prin metoda veche familiar () familiar Java. Pe parcurs, utilizați suportul de primăvară pentru containerul de servlet pentru Tomcat încorporat ca o durată de execuție HTTP în loc să îl implementați la o instanță terță parte.

Metoda principal () trece controlul la clasa auxiliară SpringApplication. unde Application.class este argumentul metodei run (). Acest lucru îi spune lui Spring să citească metadatele de adnotare din aplicație și să le gestioneze ca o componentă în contextul aplicației de primăvară.

Annotarea @ComponentScan îi spune lui Spring căutarea recursivă a cursurilor din pachetul hello și descendenții săi, etichetați direct sau indirect de adnotarea de primăvară @Component. Această directivă garantează că primăvara găsește și înregistrează țara și țărileEndpoint. deoarece este marcat @Controller. care, la rândul său, este un fel de adnotare @Component.

Adnotarea @EnableAutoConfiguration comută la un comportament implicit, bazat pe conținutul căii dvs. de clasă. De exemplu, pentru că Aplicația depinde de versiunea încorporată Tomcat (tomcat-embed-core.jar), serverul Tomcat este instalat și configurat pentru un comportament implicit în numele dvs. Și de atunci Aplicația depinde, de asemenea, de primăvara MVC (spring-webmvc.jar), Spring MVC DispatcherServlet este configurat și înregistrat pentru tine - web.xml nu este necesar! Autoconfigurarea este un mecanism util și flexibil. Pentru mai multe informații, consultați documentul API.

Construirea unui JAR executabil

Puteți compila un singur fișier executabil JAR care conține toate dependențele, clasele și resursele necesare. Acest lucru facilitează descărcarea, versiunea și implementarea serviciului ca aplicație pe tot parcursul perioadei de dezvoltare, în medii diferite și așa mai departe.

Apoi puteți rula fișierul JAR:

Dacă utilizați Maven, puteți rula aplicația utilizând mvn spring-boot: run. sau puteți construi o aplicație cu un pachet mvn clean și rulați JAR-ul astfel:

Procedura descrisă mai sus creează un JAR executabil. Puteți crea, de asemenea, un fișier clasic WAR în schimb.

Rularea aplicației

Dacă folosiți Gradle, puteți începe serviciul dvs. din linia de comandă:

Dacă utilizați Maven, puteți porni serviciul dvs. astfel: pachet mvn clean java -jar țintă / gs-producing-web-service-0.1.0.jar.

Alternativ, puteți rula serviciul direct de la Gradle, astfel:

Cu mvn - mvn, cizma de primăvară: rulați.

Testarea aplicației

Când începe aplicația, o puteți testa. Creați un fișier request.xml. care conține următoarea solicitare SOAP:

Există mai multe modalități de a testa interfața SOAP. Puteți folosi ceva de genul SoapUI sau pur și simplu utilizați instrumentele din linia de comandă dacă aveți un sistem * nix / Mac, după cum se arată mai jos:

Ca urmare, ar trebui să vedeți următorul răspuns:

Felicitări! Tocmai ați creat un serviciu SOAP utilizând serviciile Web Spring.

Puteți citi textul original al lecției pe spring.io.

Obțineți codul