viernes, julio 18, 2008

Webservices, Sabre y Axis

Como habitualmente trabajo programando para compañias de turismo, ya he tenido que lidiar varias veces con webservices de los GDS (Global Distribution System). Como lo he hecho en distintas épocas, e visto la evolución de los webservices, desde que se llamaba asi a cualquier xml enviado por http, a los WSDL. Implementé clientes para Amadeus, Worldspan y ahora me tocó Sabre, que gracias a Dios, usa los formatos de OTA (Open Travel Alliance), por lo que espero poder reusarlo mas adelante.
Lo molesto fué la implementación. Los webservices funcionan correctamente con Axis pero no con Axis2. Y Axis no compila con un Java 1.6 (tiene variables enum y hasta un paquete enum).Tambien hay clases de com.sun.net.ssl que fueron deprecadas y se incluyeron en el java standard.
Asi que lo que hice fue hacer un refactoring de todas esas variables y clases del paquete y compilar la libreria.
La gente de Sabre dice que se pueden quitar algunas validaciones en Axis2 para que no de el error, pero eran unos cuantos megas mas de jars que tenia que incluir en los war de mis aplicaciones. Es tan complicado generar y leer xml, encriptarlos, etc?
Bueno, esta todo andando. Este es uno de los motivos por los que no cambio por nada el trabajar con codigo open source.
Si alguien le sirve esto, mande un mail.

2 comentarios:

Ivan dijo...

Hola Gonzalo, como andas! esto me interesa debido a que tengo que hacer exactamente eso. Por ahi le tengo que agregar un poco mas de complejidad porque tengo que hacer un webservice (puente) que consuma a SABRE.

Si te acordas del tema decime asi me podes dar una mano.

Saludos

Ivan

Gonzalo dijo...

Uff esto fue en una vida pasada :) Estoy trabajando en otro lado ahora, otros lenguajes, todo distinto.
Igualmente la solución de esa epoca aun se usa, por lo que se que funciona. Los wsdl los podes obtener de sabre y despues usaba WSDL2Java para generar las clases.
Como te decía ya no estoy más en ese proyecto, pero si te interesa te puedo conectar con la empresa donde trabajaba.