domingo, 19 de junio de 2011

JAX-WS Web Services con Maven


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:

    org.codehaus.mojo
    jaxws-maven-plugin
    1.10
        
            
                1
                
                    wsgen
                
                
                     cestel.jdialer.provider.DataProviderService
                     true
                
            
        
    
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
                
                    wsimport
                
                
                    
                        ${project.build.directory}/jaxws/wsgen/wsdl/Jdialer.wsdl
                    
                    gesif.sgi.jdialer.dataprovider
                    ${basedir}/src/main/java
                
            
        
    


Referencias y más información:
Related Posts Plugin for WordPress, Blogger...
cookieassistant.com