Buscar este blog

sábado, 4 de octubre de 2014

WS integration in multimodule Maven Project

Objetivo:

  • Tener un módulo maven común (módulo api) con el modelo y la definición de un servicio web.
  • Tener un projecto maven de tipo WAR que implemente el servicio y lo publique como un web service.
  • Tener un proyecto maven de tipo WAR que consuma ese servicio web.




La forma habitual de trabajar con web services es disponer del modelo de clases en el servidor y generar una copia, por ejemplo con wsimport, en los distintos clientes. 
Con esto se tiene replicada la misma clase en cada cliente.

Lo ideal es tener esas clases en un único sitio, un jar, y que tanto el servidor como los clientes importen esa dependencia, sin tener que volver a crearla.

La ventaja de no replicar clases es que si el servidor publica dos fachadas de servicios, pero cuyos métodos comparten alguna clase de modelo en común, los clientes podrán hacer invocaciones entre ambos con la misma clase.


En este escenario, los dos WAR tendrán como dependencia común el módulo api 

Para la generación de los clientes se usará Spring WS, que únicamente necesita la dirección del WSDL e información de marshall/unmarshall para generar el cliente.
Esta informarción de marshalling también estará en el módulo api.


También hay un portlet que actúa como cliente de ese servicio web, y con spring-ws. La idea es no implementar lógica de negocio en los portlets y emplearlos únicamente como capa vista.

El código fuente de los proyectos está en:


El cliente WS proviene de la siguiente post de Krams:: Thanks for sharing!!!!

No hay comentarios:

Publicar un comentario