Servicios Web con Java SE: El Cliente


Creando un Cliente muy simple para un Servicio Web muy simple

Ahora crearemos —en un directorio/proyecto distinto— el cliente para nuestro Servicio Web el cual debe estar publicado y en ejecución.

Pero primero necesitamos generar los artefactos cliente. Para ello utilizaremos la herramienta wsimport incluida en Java SE 6.0, a la cual le pasamos como argumento la ubicación del contrato del servicio, es decir el documento WSDL:

>wsimport http://localhost:8080/hello?wsdl

Esto generará las clases que encapsulan las operaciones para la invocación de los métodos del Servicio Web. En nuestro caso se generarán seis clases dentro del paquete ‘hello’, entre ellas estan las clases hello.HelloService y hello.Hello que utilizaremos directamente en nuestro cliente.

Una vez generados los artefactos cliente solo resta crear el cliente en sí, nuevamente una simple aplicación de consola:

Listado de Client.java

public class Client {
  public static void main(String[] args) {
    String arg = null;
    String result = null;
    if (args.length > 0) {
      arg = args[0];
    }
    else {
      arg = "Anonimo";
    }
    try {
      hello.HelloService service = new hello.HelloService();
      hello.Hello port = service.getHelloPort();
      result = port.sayHello(arg);
    }
    catch (Exception ex) {
      result = ex.toString();
    }
    finally{
      System.out.println(result);
    }
  }
}

Nótese que para invocar la operación de nuestro Servicio Web primero creamos el localizador del servicio (con HelloService) y mediante éste obtenemos un puerto (de tipo Hello) por medio del cual después invocamos al método sayHello —tras del cual se invoca la operación del Servicio Web el cual a su vez invoca el método de la clase Hello implementada al inicio del artículo…

Solo resta compilar y ejecutar nuestro cliente con algún argumento, su nombre por ejemplo, si no se especifica un argumento la salida será “Hola Anónimo”:

>javac Client.java
>java Client Yo
Hola Yo.

La misma salida se desplegará en la consola del servicio.

Con todo lo que hemos realizado vemos lo fácil que es crear y publicar un Servicio Web así como su cliente con los paquetes y herramientas de JAX-WS incluidos en Java SE 6.0. Y aunque para un despliegue en producción no podremos prescindir de los contenedores Java EE (Tomcat, Glassfish, JBoss etc…) para los fines de desarrollo de prototipos o durante las primeras fases —así como en proyectos escolares— es suficiente con lo incluido en Java SE 6.0.

No obstante todo esto tan sólo fue el inicio, la finalidad fue dar una introducción al desarrollo de Servicios Web utilizando JAX-WS esperando motive a continuar para “abordar el Metro”. Quedan entonces muchas cosas por tratar, como la automatización de las tareas que realizamos, crear un servicio y cliente a partir de un WSDL, el despliegue en contenedores Java EE, utilizar contratos de datos y JAXB, utilización de JAXP, StAX y SAAJ, sobre interoperabilidad y WS-* con WSIT, etc… Ya ni se diga de explorar otras opciones para el desarrollo de WS en Java como Axis con XMLBeans, AXIOM, etc…

Espero que sirva de algo y hasta la próxima!

Acerca de Willy Mejia

Developer, Techie, Human... http://about.me/willyxoft
Esta entrada fue publicada en Java, Servicios. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s