Como decía en "Generación de código JAXB con Maven", una de las ventajas que aporta maven es la capacidad de automatizar tareas repetitivas y reproducibles del proyecto de desarrollo en el propio gestor del ciclo de vida del mismo independizándolo de la herramienta de desarrollo.
Por ejemplo, si necesitamos acceder a un Web Service tenemos que generar los artefactos cliente que permitan "consumirlo" (Service Endpoint Interface -SEI-, clases valor de dependencias, etc...) y cada vez que cambie en algo el servicio tendremos que regenerar nuestros artefactos. Si esta tarea se realiza con un IDE, siempre necesitaremos el mismo IDE para actualizarla y (probablemente) pasar por algún tedioso wizard. Con maven, basta tener nuestros fuentes y el fichero pom.xml para que nuestro proyecto se construya en un momento sin instalar ni configurar nada.
El plugin jaxws-maven-plugin provee los adaptadores para las herramientas wsgen y wsimport de JAXWS a través de los goals jaxws:wsgen y jaxws:wsimport para crear web services y clientes de éstos respectivamente.
Para crear un web service, bastará con indicar el SEI en la sección execution del plugin y las opciones que queramos (en este caso, generar el fichero WSDL. Por ejemplo:
Si queremos crear un cliente para un determinado servicio especificaremos, como habitualmente, el fichero de definición WSDL, el paquete donde queremos que se generen los artefactos y el directorio donde se generarán los ficheros fuente. Por ejemplo:org.codehaus.mojo jaxws-maven-plugin 1.10 1 wsgen cestel.jdialer.provider.DataProviderService true
org.codehaus.mojo jaxws-maven-plugin 1.10 1 wsimport ${project.build.directory}/jaxws/wsgen/wsdl/Jdialer.wsdl gesif.sgi.jdialer.dataprovider ${basedir}/src/main/java
Referencias y más información:
Interesante. ¿Sabes si también se podría generar un web service (la parte servidora, no el cliente) a partir de un wsdl con maven?
ResponderEliminarLe he dado vueltas al asunto pero no encuentro la manera.
Hombre, se supone que un servicio "hace cosas" a través del backend de negocio y en el WSDL sólo está la interfaz del servicio (SEI), con lo que sólo podrías "emular" dicha interfaz, pero no lo que hace, obviamente.
ResponderEliminarSi eso es lo que necesitas, puedes usar las funcionalidades "Mock Services" de soapUI. Yo uso mucho soapUI para testing de web services: almacena testcases, genera mock services para testing de clientes, etc... Está francamente bien.
Saludos!