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:
- 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).
- Ejecutarlo el comando desde la consola, de la siguiente forma:
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.