Versiones comparadas

Clave

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

...

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:

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

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;

import com.servicios.soap.client.MarketSoapClient;

@Configuration
public class ClientesSoapConfiguracion {

	/**
	 * Bean necesario para que el cliente haga la transformacion JAXB
	 * 
	 * @return
	 */
	@Bean
	public Jaxb2Marshaller marshaller() {
		Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
		// El nombre del paquete debe ser donde esten las clases Java generadas con JAXB
		marshaller.setContextPath("com.servicios.soap.model");
		return marshaller;
	}

	/**
	 * Damos de alta el cliente soap
	 * 
	 * @param marshaller
	 * @return
	 */
	@Bean
	public MarketSoapClient marketSoapClient(Jaxb2Marshaller marshaller) {
		MarketSoapClient client = new MarketSoapClient();
		client.setDefaultUri("http://localhost:8080/soap");
		client.setMarshaller(marshaller);
		client.setUnmarshaller(marshaller);
		return client;
	}

}