SOAP webszolgáltatás meghívása tavasszal

1. Áttekintés

Korábban láttuk, hogyan lehet SOAP webszolgáltatást létrehozni a Spring segítségével.

Ebben az oktatóanyagban megtudhatjuk, hogyan lehet létrehozni egy Spring-alapú klienst a webes szolgáltatás fogyasztására.

A Java Java SOAP webszolgáltatásának meghívásakor ugyanezt tettük a JAX-WS RI használatával.

2. A tavaszi SOAP webszolgáltatás - gyors áttekintés

Korábban tavasszal hoztunk létre egy webszolgáltatást az ország nevének megadásához. Mielőtt elmélyülnénk az ügyfél megvalósításában, készítsünk egy gyors áttekintést arról, hogyan tettük ezt.

A szerződés-első megközelítést követve először egy XML sémafájlt írtunk, amely meghatározta a tartományt. Ezután ezt az XSD-t használtuk osztályok előállítására a kérés, válasz és adatmodell számára a jaxb2-maven-plugin.

Ezt követően négy osztályt kódoltunk:

  • OrszágEndpoint - a kérésre válaszoló végpont
  • OrszágRepository - a háttér-tároló az országadatok megadásához
  • WebServiceConfig - a szükséges babot meghatározó konfiguráció
  • Alkalmazás - a Spring Boot App, hogy szolgáltatásunkat fogyasztás céljából elérhetővé tegyük

Végül a cURL-en keresztül teszteltük SOAP-kérelem küldésével.

Indítsuk el a szervert a fenti Boot alkalmazás futtatásával, és lépjünk a következő lépésre.

3. Az Ügyfél

Itt leszünk hozzon létre egy Spring klienst a fenti webszolgáltatás meghívására és tesztelésére.

Most lépésről lépésre lássuk, mit kell tennünk az ügyfél létrehozása érdekében.

3.1. Kliens kód generálása

Először generálunk néhány osztályt a WSDL címen //localhost:8080/ws/countries.wsdl. Ezt letöltjük és elmentjük a mappánkba src / main / resources mappába.

A kód előállításához a Maven használatával hozzáadjuk a maven-jaxb2-plugin a miénknek pom.xml:

 org.jvnet.jaxb2.maven2 maven-jaxb2-plugin 0.14.0 WSDL létrehozása $ {project.basedir} / src / main / java com.baeldung.springsoap.client.gen $ {project.basedir} / src / main / resources országok.wsdl 

Különösen a beépülő modul konfigurációjában definiáltuk:

  • generatorDirectory - a mappa, ahová a létrehozott műtermékeket menteni fogja
  • generatorPackage - a csomag neve, amelyet a műtermékek használni fognak
  • schemaDirectory és schemaBe foglalja - a WSDL könyvtárát és fájlnevét

A JAXB generációs folyamat végrehajtásához ezt a bővítményt a projekt egyszerű felépítésével hajtjuk végre:

mvn össze

Érdekes módon, az itt előállított műtermékek megegyeznek a szolgáltatáshoz létrehozottakkal.

Soroljuk fel azokat, amelyeket használni fogunk:

  • Ország.java és Pénznem.java - az adatmodellt képviselő POJO-k
  • GetCountryRequest.java - a kérés típusa
  • GetCountryResponse.java - a válasz típusa

A szolgáltatást a világ bármely pontján telepíthetik, és csak a WSDL-jével ugyanazokat az osztályokat tudtuk létrehozni az ügyfél végén, mint a szerver!

3.2. CountryClient

Ezután ki kell terjesztenünk a tavaszi programot WebServiceGatewaySupport kölcsönhatásba lépni a webszolgáltatással.

Hívjuk ezt az osztályt CountryClient:

a public class CountryClient kiterjeszti a WebServiceGatewaySupport {public GetCountryResponse getCountry (String ország) {GetCountryRequest kérés = új GetCountryRequest (); request.setName (ország); GetCountryResponse response = (GetCountryResponse) getWebServiceTemplate () .marshalSendAndReceive (kérés); visszatérési válasz; }}

Itt egyetlen módszert definiáltunk getCountry, amely megfelel a webszolgáltatás által kitett műveletnek. A módszerben létrehoztunk egy GetCountryRequest példányt, és a webszolgáltatást hívta meg a GetCountryResponse. Más szavakkal, itt hajtottuk végre a SOAP cserét.

Amint láthatjuk, Spring meglehetősen egyértelművé tette az invokációt WebServiceTemplate. A sablon módszerét használtuk marsallSendAndReceive hogy elvégezzék a SOAP cserét.

Az XML konverziókat itt egy plug-in segítségével kezeljük Marshaller.

Most nézzük meg a konfigurációt, ahol ez Marshaller származik.

3.3. CountryClientConfig

A Spring WS kliens konfigurálásához mindössze két bab kell.

Először a Jaxb2Marshaller üzenetek konvertálása XML-be és onnan, másodsorban pedig a mi CountryClient, amely bekapcsolja a rendező bab:

@Configuration public class CountryClientConfig {@Bean public Jaxb2Marshaller marshaller () {Jaxb2Marshaller marshaller = new Jaxb2Marshaller (); marshaller.setContextPath ("com.baeldung.springsoap.client.gen"); visszatérő rendező; } @Bean public CountryClient countryClient (Jaxb2Marshaller marshaller) {CountryClient ügyfél = új CountryClient (); client.setDefaultUri ("// localhost: 8080 / ws"); client.setMarshaller (marshaller); client.setUnmarshaller (marshaller); visszatérő ügyfél; }} 

Itt arra kell vigyáznunk, hogy a rendező’Kontextusútja megegyezik a generatorPackage a plugin konfigurációban megadva pom.xml.

Kérjük, itt vegye figyelembe az ügyfél alapértelmezett URI-ját is. Be van állítva szappan: cím a WSDL-ben megadott hely.

4. Az ügyfél tesztelése

Ezután írunk egy JUnit tesztet annak ellenőrzésére, hogy ügyfelünk a várt módon működik-e:

@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (class = CountryClientConfig.class, loader = AnnotationConfigContextLoader.class) public class ClientLiveTest {@Autowired CountryClient client; @Test public void givenCountryService_whenCountryPoland_thenCapitalIsWarsaw () {GetCountryResponse response = client.getCountry ("Lengyelország"); assertEquals ("Varsó", response.getCountry (). getCapital ()); } @Test public void givenCountryService_whenCountrySpain_thenCurrencyEUR () {GetCountryResponse response = client.getCountry ("Spanyolország"); assertEquals (Pénznem.EUR, response.getCountry (). getCurrency ()); }} 

Mint láthatjuk, bekötöttük a CountryClient bab definiálva a mi CountryClientConfig. Aztán használtuk getCountry hogy a korábban leírt módon hívja meg a távoli szolgáltatást.

Sőt, a POJO-k által generált adatmodell segítségével ki tudtuk vonni az állításokhoz szükséges információkat, Ország, és Valuta.

5. Következtetés

Ebben az oktatóanyagban láttuk az alapokat, hogyan lehet a SOAP webszolgáltatást meghívni a Spring WS segítségével.

Csupán megvakartuk a Spring kínálatának felületét a SOAP webszolgáltatások területén; rengeteg felfedeznivaló van.

Mint mindig, a forráskód is elérhető a GitHubon.


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