Web Services con Axis2 y Netbeans II, Creación de un cliente

Sunday, March 4, 2012 17:40

En el artículo anterior explicabamos paso a paso cómo crear nuestro primer Web Service. En este artículo os enseñaré como realizar un cliente que invoque a nuestro primer servicio web, es decir un cliente que hable con nuestro servidor.

Si recordais, el servicio web que habíamos desarrollado era capaz de realizar la suma de 2 números.  Si queremos conocer qué funcionalidad nos ofrece el servicio y cómo comunicarnos con él, nos valdremos de un fichero WSDL (Web Services Description Language) que no es más que un descriptor de los servicios en formato XML.

Para acceder al fichero WSDL accederemos a la siguiente dirección: http://localhost:8080/axis2/services/Calculadora?wsdl .

Axis permite generar a partir de un fichero WSDL toda una serie de clases cliente que resuelven la comunicación con el servicio web y que utilizaremos para comunicarnos con él. Para tal tarea, una vez que  hemos accedido a la anterior dirección, procederemos a guardar el resultado en un fichero con el nombre calculadora.wsdl. Para la generación de las clases utilizaremos la utilidad wsdl2java ,  que viene dentro de la distribución binaria de axis2

Abrimos un terminal en nuestro ordenador y ejecutamos el siguiente comando para obtener las clases necesarias: (recordad los pasos que seguimos al actualizar el PATH en el artículo anterior)

C:\calculadora\wsdl2java -uri C:\calculadora\Calculadora.wsdl

Este comando nos generará una serie de fuentes java en la misma carpeta donde lo ejecutemos dentro de una nueva carpeta con el nombre  “src”. En nuestro caso habrá creado los siguientes ficheros:

src/es/calculadora/CalculadoraCallbackHandler.java
src/es/calculadora/CalculadoraStub.java

Con estas clases crearemos un nuevo proyecto Java en Netbeans con el nombre ClienteCalculadora. El proyecto después de haber incluido las clases y haber importado las librerias de axis2 quedará con la siguiente estructura:

Con todo esto ya podemos utilizar las clases que nos ha generado Axis y crearo un programa de prueba que se conecte con nuestro servicio web. Crearemos un programa de prueba como el siguiente:

package es.calculadora;
 
import java.rmi.RemoteException;
 
public class PruebaConexion {
 
	public static void main(String[] args) {
 
		/*
                 * Clases que nos abstraen de la conexión con el web service
                 * generadas a través del fichero wsdl
		 */
		CalculadoraStub calculadora = null;
		CalculadoraStub.Sumar request = null;
		CalculadoraStub.SumarResponse response = null;
 
		try {
 
			calculadora = new CalculadoraStub();
			request = new CalculadoraStub.Sumar();
			// establecemos los parámetros
			request.setSumando1(7);
                        request.setSumando2(2);
			// invocamos al web service
			response = calculadora.sumar(request);
			// mostramos la respuesta
			System.out.println("La suma es: " + response.get_return());
 
		} catch (RemoteException excepcionDeInvocacion) {
			System.err.println(excepcionDeInvocacion.toString());
		}
 
	}
}

El resultado que nos devolverá la ejecución del programa anterior será: “La suma es 9″. Y ya está! ya hemos creado nuestro primer cliente que se conecta a un servicio web.

You can leave a response, or trackback from your own site.

One Response to “Web Services con Axis2 y Netbeans II, Creación de un cliente”

  1. JC says:

    September 19th, 2013 at 3:33 pm

    Hola tengo estos errores en el CalculadoraStub.java

    error: ADBDataSource is abstract; cannot be instantiated
    new org.apache.axis2.databinding.ADBDataSource(this,MY_QNAME);

    error: no suitable method found for createOMElement(OMDataSource,QName)
    return factory.createOMElement(dataSource,MY_QNAME);

    Ayudame por favor ya tengo todas las librerias de axis2 pero aun asi me marca error.

    De hecho eran 3 erroores pero comente uno que no era tan vital y solo quedaron esos dos.

    O mandame tus librerias para anexarlas talvez tenga un problema de version.

Leave a Reply