domingo, 4 de noviembre de 2018

Como crear un WebServiceClient con JAX-WS

Ya hicimos hace mucho tiempo un ejemplo de como hacer un servicio web con JAX-WS. Pero hace poco me preguntarón como hacer un cliente web con SOAP. La verdad es que ya esta el tema algo anticuado pero también es verdad que no tenía ningún post del tema. Así que alla vamos con el tema. 

Para empezar podemos coger un WSDL de prueba de nuestro antiguo proyecto que puedes obtener aquí. Una vez obtenido utilizamos la herramienta 'wsimport' que esta incluida dentro de nuestra JDK. Y a través de ella y estando en la carpeta raiz del proyecto, le indicamos donde crear el cliente con el siguiente comando:

/usr/lib/jvm/java-8-openjdk-amd64/bin/wsimport 
-keep 
-d src/main/java 
src/main/resources/META-INF/wsdl/webservice-sample.wsdl

'-keep' sirve para que además de las clases compiladas, mantenga también el código fuente, '-d' nos permite indicar en que carpeta crear las clases y  despues indicamos el fichero a partir del cual queremos generarlo.

Lo principal en nuestro cliente será la anotación 'WebServiceRef' donde podremos indicar directamente la clase del 'stub' o como en nuestro caso la localización de un WSDL local o remoto.

Si estuvieramos utilizando un Servidor de Java/Jakarta EE podriamos utilizar esta anotación también para inyectar la clase y evitar crearla manualmente.

public class WebServiceClient {
 @WebServiceRef(wsdlLocation = "META-INF/wsdl/webservice-sample.wsdl")
 private static WebServiceSample service;

 public WebServiceClient() {
  service = new WebServiceSampleImplService().getWebServiceSampleImplPort();
 }

 public String despide() {
  return service.despide();
 }

 public Saludo saluda() {
  return service.saluda();
 }
}

Si quieres ver el código completo, lo puedes obtener aquí

No hay comentarios:

Publicar un comentario