Ya hemos visto en el blog como podemos crear un servicio de acceso en la suite de WSO2 en 3 minutos, luego vimos como podíamos crear clientes en axis2 para consumir estos servicios y por último vimos como podíamos exponer operaciones de servicios de acceso a dato en una manera RESTful.
En esta entrada quisiera mostrarles como consumir este servicio de acceso a datos RESTful usando la librería Jersey y además una comparativa entre el consumo usando esta variante y la de un cliente axis2.
No es objetivo decir que una variante sea mejor que la otra si no que vean los números y puedan elaborar comparativas más claras en este tema.
Para crear un proyecto que implemente un cliente de un servicio web RESTful con jersey solo basta seguir los siguientes pasos:
Crear un proyecto Maven con el arquetipo “Maven-archetype-quickstart”
En el pom del proyecto creado incluir la dependencia a jersey como pueden ver en esta imagen.
Implementar el cliente como sigue:
Este cliente es realmente sencillo, el parámetro se lo estamos incluyendo en la misma URL del servicio, aunque jersey deja pasarle múltiples parámetros y con diferentes propiedades.
El resultado no lo estamos utilizando para nada, solo lo obtenemos y no extraemos información útil del mismo. Solo basta decir que es un XML y con una librería como XStream se podrían obtener sus valores.
Un ejemplo de resultado es este:
Para la comparativa e implementado un cliente axis2 creando también un proyecto Maven. De hecho lo que hice fue crear un cliente axis2 usando el dashboard del Developers Studio de WSO2 y luego pasé el proyecto a Maven.
El cliente es realmente sencillo:
En este caso como pueden ver no solo obtenemos la respuesta si no que vamos al valor dentro del XML y lo imprimimos en pantalla.
En ambas pruebas hicimos unas 10000 iteraciones para ver cómo se comportaba el tiempo de respuesta. Aclaro que no es una prueba válida ni sujeta a criterios comparativos fiables, es solo la base para que todo el que quiera probar tenga un inicio rápido.
En esta imagen pueden ver el tiempo de respuesta del servicio usando el cliente restful luego de 2 peticiones fallidas y 20019 peticiones válidas.
Como pueden ver el tiempo máximo fue de 121ms y el promedio de respuesta fue de 0.248ms
En esta otra imagen tienen lo mismo pero sumándole 2 llamadas al cliente axis2 del servicio de acceso a datos, recuerden que cada llamada lleva un ciclo dentro.
Como pueden ver el tiempo máximo no se ha excedido y el promedio ha bajado un poco, nada significativo.
Las pruebas fueron realizadas localmente y sería interesante:
- Trabajar con el XML obtenido con el cliente RESTful para que se asemeje más al cliente axis2.
- Incluir diferentes tamaños de los mensajes de request y response.
- Implementar el escenario de forma remota y no local.
Creo que así las pruebas tendrían un poco más de valor para decidirnos qué tipo de cliente usar.
Les adjunto:
Proyecto Maven para el cliente RESTful.
Proyecto Maven para el cliente Axis2.
Espero les sea de utilidad.
Cliente RESTful para servicio de datos en WSO2 y comparativa contra cliente axis2.