lunes, 1 de agosto de 2016

Implementación de un Proxy Cliente desde un WSDL - SOAP - Java

Muchos desarrolladores siempre utilizan IDEs para la implementación de un Cliente Proxy para utilizar un Servicio Web; generándose las clases de la implementación en paquetes por defecto que define el WSDL del Servicio Web, los cuales se ven mal al momento de anexarlos a nuestro proyecto.

Por ejemplo: Tenemos un proyecto, en el que estamos trabajando con los siguientes paquetes:

  • latam.company.proyecto.controller
  • latam.company.proyecto.model
  • latam.company.proyecto.service
  • latam.company.proyecto.util
  • pe.com.other.company.ws.consult (Paquetes de las Clases del Servicio Web - Cliente Proxy)
  • pe.com.other.company.ws.consult.Error.V1  (Paquetes de las Clases del Servicio Web - Cliente Proxy)
  • pe.com.other.company.ws.consult.TestHeader.V1  (Paquetes de las Clases del Servicio Web - Cliente Proxy)

En este caso, el IDE generó las clases del Cliente Proxy en los paquetes: pe.com.other.company.ws.consult, los cuales son distintos al estándar que se esta manejando en nuestro proyecto.

Para mantener el estándar, recomiendo realizar lo siguiente:

  1. Utilizar el ejecutable o herramienta que viene en el SDK de java, de nombre wsimport.exe (WINDOWS) o wsimport (LINUX). La ubicación en el SDK: ..\Java\jdk1.7.0_25\bin\wsimport.exe (WINDOWS).
  2. Ejecutarlo el comando desde la consola, de la siguiente forma: 
    1. wsimport -p latam.company.proyecto.ws -keep -verbose http://192.168.2.140/TEST/Subscriptions/Consult?wsdl
    Donde:
     -p latam.company.proyecto.ws: Indica el paquete donde deseamos que se generen las clases de la implementación. El nombre del paquete debe seguir el estándar de la solución a implementar. 
     -keep: Nos permite guardar los archivos generados. (*.java, *.class).
     -verbose: Mensajes del proceso de generación.
     http://192.168.2.140/TEST/Subscriptions/Consult?wsdl: Ubicación del WSDL del Servicio Web. Este también puede ser una ubicación local, por ejemplo: "D:\TEST\Consult.wsdl" para Windows.

Luego de generar las clases, se deben agregar al proyecto, quedando de la siguiente forma:
  • latam.company.proyecto.controller
  • latam.company.proyecto.model
  • latam.company.proyecto.service
  • latam.company.proyecto.util
  • latam.company.proyecto.ws (Paquetes de las Clases del Servicio Web - Cliente Proxy)
  • latam.company.proyecto.ws.Error.V1 (Paquetes de las Clases del Servicio Web - Cliente Proxy)
  • latam.company.proyecto.ws.TestHeader.V1 (Paquetes de las Clases del Servicio Web - Cliente Proxy)
 
De esta forma se mantendría un orden en la arquitectura lógica de la solución.