Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

Tabla de contenidos

...

Dependencia pom.xml

Para hacer un cliente SOAP en Spring Boot, en primer lugar tendremos que añadir la siguiente dependencia a nuestro pom.xml:

Bloque de código
languagexml
		<!-- Dependencia Spring WS -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web-services</artifactId>
		</dependency>

Plugin para generar automáticamente el cliente

Podemos añadir, también en el pom.xml, el siguiente plugin para generar las clases necesarias para el cliente automáticamente, a partir de un archivo .wsdl. Si queremos generar las clases a partir de diferentes wsdl, debemos ponerlos en diferentes bloque s<execution>:

...

Aquí, tendremos que especificar el campo generatePackage, con el paquete en el que se crearán las clases, schemaDirectory con el directorio donde el plugin buscará los archivos wsdl, que se especificarán dentro de schemaIncludes.

Cliente

Una vez generadas las clases necesarias por el plugin, tendremos que hacer el cliente:

Bloque de código
languagejava
package com.servicios.soap.client;

import javax.xml.bind.JAXBElement;

import org.springframework.ws.client.core.support.WebServiceGatewaySupport;

import com.servicios.soap.model.ObjectFactory;
import com.servicios.soap.model.ProductosVentaRequestType;
import com.servicios.soap.model.ProductosVentaResponseType;

public class MarketSoapClient extends WebServiceGatewaySupport {

	public ProductosVentaResponseType obtenerTodosProductos() {
		ObjectFactory of = new ObjectFactory();
		JAXBElement<ProductosVentaRequestType> request = of.createProductosTodosRequest(new ProductosVentaRequestType());

		JAXBElement<ProductosVentaResponseType> response = (JAXBElement<ProductosVentaResponseType>) getWebServiceTemplate()
		          .marshalSendAndReceive(request);
		
		return response.getValue();
	}

}

Configuración cliente

Por último, tendremos que añadir la siguiente clase para la configuración del cliente:

...