Servicios Web con Java SE: El Servicio


Creando un Servicio Web muy simple

Para ilustrar la creación de Servicio Web con JAX-WS 2.0 emplearemos el clásico ejemplo de Hola Mundo (posteriormente abordaremos otros ejemplos) el cual luce así:

Listado de Hello.java

package hello;
import javax.jws.WebService;

@WebService
public class Hello {
    private String message = new String(”Hola “);
    public String sayHello(String name) {
    	String msg = message + name + “.”;
        System.out.println(msg);
        return msg;
    }
}

Nótese que luce como una clase Java normal pero con un par de adiciones: En primer lugar importamos javax.jws.WebService, lo cual es necesario para marcar la clase Hello con la anotación @WebService. Con esto habilitamos la clase para que pueda ser publicada como un Servicio Web, en éste caso con solo una operación, la del método sayHello.

El siguiente paso es generar los artefactos de despliegue para dicha clase, para ello utilizamos la herramienta wsgen, incluida en Java SE 6.0, a la cual le pasamos como argumento la clase hello.Hello compilada:

>javac hello/Hello.java
>wsgen -cp . hello.Hello

Con todo lo anterior ya tenemos un sencillo Servicio Web casi listo para ser desplegado en algún contenedor Java EE, no obstante podemos probarlo sin un contenedor si creamos un Endpoint dentro de una aplicación que actuará como host del servicio web, tal como se ilustra en el siguiente código:

Listado de SimpleHelloWS.java

import javax.xml.ws.Endpoint;
import hello.Hello;

public class SimpleHelloWS {
  public static void main(String[] args) {
    String endpointAddress = “http://localhost:8080/hello”;
    Endpoint.publish(endpointAddress, new hello.Hello());
    System.out.println(”El Servicio Web Hello se esta ejecutando…”);
    System.out.println(”WSDL: ” + endpointAddress + “?wsdl”);
  }
}

Nótese que se trata de una simple aplicación de consola que utiliza el método publish de la clase javax.xml.ws.Endpoint para crear y publicar un Endpoint para una instancia de la clase hello.Hello en la dirección http://localhost:8080/SimpleHelloWS/hello. Esto último gracias a que la clase Endpoint utiliza el servidor web “liviano” de Sun que está incluido en Java SE dentro del paquete com.sun.net.httpserver.

Tras compilar y ejecutar la aplicación se mostraran dos líneas indicando que el servicio se está ejecutando y que la ubicación del “contrato del servicio”, es decir el documento WSDL del mismo, para cualquier cliente que desee acceder al mismo.

>javac SimpleHelloWS.java
>java SimpleHelloWS
El Servicio Web Hello se esta ejecutando...
WSDL: http://localhost:8080/hello?wsdl

Por lo que ahora sigue crear un cliente que lo consuma. 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