Diferencia entre revisiones de «Clientes De Web Service»
(→Utilización de un cliente ADB de Axis 2) |
|||
(No se muestra una edición intermedia de otro usuario) | |||
Línea 1: | Línea 1: | ||
+ | [[Category:Java]] | ||
+ | [[Category:Web Service]] | ||
+ | |||
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. | 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. | ||
Línea 77: | Línea 80: | ||
</code> | </code> | ||
− | ==Ver también== | + | == Ver también == |
− | * [[Web Service Con Spring]] | + | |
− | * [http://ws.apache.org/axis2/ Apache Axis 2] | + | *[[Web Service Con Spring]] |
+ | *[[Cliente Web Service con Ant y Axis2]] | ||
+ | *[http://ws.apache.org/axis2/ Apache Axis 2] |
Revisión actual del 14:44 27 oct 2009
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.
Contenido
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
Invocación sincrónica
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());
}
Invocación asincrónica
En la invocación asincrónica se debe crear un callback que será ejecutado al momento de llegar la respuesta del web service.
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.startinvadirPlaneta(planeta, , new InvadirPlanetaCallback());
assertNotNull(plan); assertNotNull(plan.getFechaInvasion());
}
private class InvadirPlanetaCallback extends InvasionCallbackHandler {
public void receiveResultinvadirPlaneta(PlanDeInvasion result) { assertNotNull(plan); assertNotNull(plan.getFechaInvasion()); }
public void receiveErrorinvadirPlaneta(java.lang.Exception e) { fail(); }
}