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:

2 comentarios :

  1. 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?

    Le he dado vueltas al asunto pero no encuentro la manera.

    ResponderEliminar
  2. 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.

    Si 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!

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...
cookieassistant.com