Clientes De Web Service

De Dos Ideas.
Revisión del 20:20 4 sep 2008 de 201.251.185.130 (discusión) (Página nueva: Existen varias herramientas que ayudan en la generación de clientes para Web Service. Estas herramientas parten de WSDL y generan el código necesario para realizar la invoca...)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Existen varias herramientas que ayudan en la generación de clientes para Web Service. Estas herramientas parten de WSDL y generan el código necesario para realizar la invocación.

En Java, una de las herramientas más utilizadas es Apache Axis 2, y SoapUI como herramienta gráfica para testear y generar clientes de los servicios.

Apache Axis 2

Axis2 es una herramienta Java para la generación web services, tanto clientes como las clases para el servidor.

Generación del cliente

Para la generación del cliente se usa el comando wsdl2java que provee Axis2. Una forma simple de utilizar esta utilidad es a través de SoapUI.

Axis2 ofrece 3 formas principales para generar clientes:

  • Axis2 Databinding Framework (ADB)
  • XMLBeans
  • JiBX

ADB es la opción más simple, y genera solamente dos clases: una clase para el servicio, y una clase para un callback de invocaciones (en el caso de que se quieran hacer invocaciones asincrónicas). La clase del servicio contiene varias inner class con los mensajes de parámetros y retornos.

XMLBeans y JiBX son mucho más flexibles que ADB, pero también más complejas de usar. En general, si el servicio es pequeño y no complejo, ADB suele ser la mejor opción.

Utilización de un cliente ADB de Axis 2

Supongamos un web service Invasion que contiene la siguiente operación:

invadirPlaneta(planeta : Planeta) : PlanDeInvasion

La operación invadirPlaneta recibe como parámetro un tipo de datos complejo Planeta y devuelve un tipo de datos complejo PlanDeInvasion.

Al usar wsdl2java a través de ADB, se generan dos clases:

InvasionStub.java
InvasionCallbackHandler.java

La clase InvasionStub tiene dos inner class que representan al Planeta y al PlanDeInvasion

InvasionStub.Planeta
InvasionStub.PlanDeInvasion

La invocación sincrónica del método: public void testInvadirPlaneta() throws java.lang.Exception {

   InvasionStub invasionStub = new InvasionStub();      
   InvasionStub.Planeta planeta = new InvasionStub.Planeta();
   planeta.setNombre("Tierra");
   planeta.setNivelTecnologico(2);
   InvasionStub.PlanDeInvasion plan = invasionStub.invadirPlaneta(planeta);
   assertNotNull(plan);
   assertNotNull(plan.getFechaInvasion());

}


Ver también