Hemos hablado numerosas veces en este blog del Proyecto CAVAL por lo que considero que no es necesario volverlo a explicar, si alguno de vosotros aún no lo conoce podéis leer sobre el proyecto aquí, aquí, aquí o leer algún post un poco más técnico sobre alguno de los módulos del proyecto como el proceso de reserva on-line, la especificación de channel manager, los procesos de creación de especificaciones, el validador, la especificación de turismo de factura electrónica, la matrícula turística o sus interfaces gráficas, el matching tool o incluso proyectos de fin de carrera que se han presentado a raíz de CAVAL.
En este post nos ponemos un poco en la piel del desarrollador Java, y vamos a ver desde su punto de vista como puede desarrollar un cliente para servicio web que cumple con la especificación CAVAL.
En primer lugar lo que necesita es la herramienta CXF para la generación de clases Java, dicha herramienta nos permite generar todo el conjunto de clases necesarias para interactuar con un servicio web dejando de lado las operaciones a bajo nivel y trabajando en un nivel de abstracción en el que solamente manipulamos objetos, olvidándonos de SOAP, XML y demás…
Bien, una vez descargada y descomprimida la herramienta, que está disponible en el enlace anterior, tenemos descargarnos última versión de la especificación CAVAL del servicio del que queremos generar un cliente, para este ejemplo supondremos que el cliente es del “HotelBookingService”.
Teniendo en nuestras manos la especificación y la herramienta CXF, abrimos una ventana de “símbolo de sistema” de windows y nos dirigimos a la carpeta descomprimida del CXF para ejecutar el siguiente comando:
wsdl2java -client -d “output_directory” “wsdl”
Donde “output_directory” será el directorio donde queremos que nos cree las clases java y “wsdl” será la ruta hasta el fichero que nos acabamos de descargar.
Tras ejecutar este comando tenemos todas las clases generadas en el directorio destino, y además una interface con en nombre del servicio, en nuestro caso HotelBookingService.java que contiene todos los métodos del servicio para ser invocados, y así podemos integrarlo fácilmente con nuestra lógica de negocio.
NOTA: Si para generar este cliente utilizas el WSDL del servicio al que vas a acceder directamente no habrá ningún problema, si has creado las clases desde la especificación que hay en la web tendrás que añadirle unos parámetros al constructor de la clase HotelBookingService_Service que se encuentra en la interfaz HotelBookingService.java e la siguiente manera:
“HotelBookingService_Service s = new HotelBookingService_Service(url, SERVICE_NAME);”