Generación de clientes para WebServices con la JDK

En caso de que tengamos un webservice que consumir y no contemos con ninguna herramienta para automatizar la creación de artefactos del lado del cliente, como Maven, podremos hacerlo de una forma sencilla a través de las apis propias de Java.

La JDK posee facilidades para la generación de estos de estos fuentes que no requieren ninguna dependencia.

Los pasos a seguir son:

1) Creamos un proyecto java básico desde el wizard de nuestro IDE preferido.

2) Creamos un archivo custom.xml en el src del proyecto con el siguiente formato:

<jaxws:bindings wsdlLocation = "URL_WSDL" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">

<jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>

</jaxws:bindings>

En URL WSDL indicamos la dirección al wsdl del servicio que deseamos consumir.

Añadimos el atributo enableWrapperStyle, con valor false.

Esto último se debe a que la API nos permite generar los artefactos de dos formas: Wrapped y UnWrapped.

    • UnWrapped: Cada parámetro, en el mensaje SOAP se coloca como hijo individual del elemento Body directamente.

    • Wrapped: Los parámetros en el mensaje SOAP se colocan juntos (se wrappean), dentro de un elemento hijo del Body.

En general, para los clientes suele resultar más simple la forma UnWrapped, por lo tanto con el archivo custom.xml, podemos forzar a esta variante.

3) Nos paramos en el directorio src, y por línea de comandos hacemos:

wsimport -keep -p packageDest URL_WSDL -b custom.xml

Con esto generará los fuentes necesarios para consumir el webservice en el directorio packageDest.

4) Finalmente consumimos el servicio, utilizando los artefactos generados, como se indica en la última fase de la guía de Generación de clientes con Maven.