Ejercicios de introducción a los Servicios Web
NOTA: Para realizar los ejercicios, se deben haber establecido previamente
las variables de entorno de Weblogic, utilizando para ello el comando:
. bea/weblogic700/server/bin/setWLSEnv.sh
1. Para comenzar vamos a probar un servicio sencillo. Se trata
de un "Hola mundo!" en forma de servicio. Vamos a desplegar el servicio
en Weblogic, y a probarlo. Este servicio se encuentra en el directorio hola.
Está implementado en la clase utils.HolaMundo:
package utils;
public class HolaMundo {
public String saluda(String nombre) {
return "Hola " + nombre;
}
}
a) Construir el servicio. Para ello seguiremos los siguientes pasos:
Introduciremos el comando:
ant service
Que nos generará un fichero sw_hola.ear, que deberemos desplegar
en Weblogic.
- Ir a la consola de Weblogic.
- Pulsar sobre Web Service Components en el menú de la izquierda.
- Pulsar sobre Configure a new Web Service Component ...
- Ir al paso uno (Step 1), para subir el fichero de nuestro servicio.
Seleccionamos el fichero sw_hola.ear que hemos generado previamente
y pulsamos en Upload.
- Una vez subido, seleccionamos el fichero sw_hola.ear en la lista
dentro del paso 2 (Step 2).
- Desplegaremos el fichero en el contexto que nos pone por defecto (sw_hola),
en cualquiera de los servidores disponibles. Vamos a suponer que lo desplegamos
en el servidor de administración, que se encuentra en el puerto 7001.
- Una vez desplegado podemos ir a la siguiente dirección, donde Weblogic
nos habrá generado una página con información sobre el
servicio, además de una interfaz web para invocarlo:
http://localhost:7001/sw_hola/hola
- Veremos una lista de las operaciones que ofrece el servicio, en este caso
tenemos sólo la operación saluda. Pulsamos sobre ella.
- Accedemos a una interfaz web para invocar dicha operación. Deberemos
proporcionar en un cuadro de texto el parámetro que toma este método,
que será nuestro nombre, y a continuación pulsar sobre Invoke.
- Nos mostrará el resultado que nos ha devuelto la operación
de nuestro servicio, y los mensajes SOAP que se han utilizado para invocar
el servicio.
- ¿Qué elementos encontramos en el mensaje de petición?
- ¿Y en el de respuesta?
- Vamos a ver el documento WSDL que describe el servicio. Este documento puede
ser obtenido en la siguiente dirección:
http://localhost:7001/sw_hola/hola?WSDL
Buscar en este documento la información sobre:
- Nombre del servicio y puerto.
- Operaciones que ofrece el servicio.
- Parámetros y datos devueltos por las operaciones.
b) Hemos accedido al servicio utilizando la interfaz web que nos ha generado
Weblogic para probarlo. Sin embargo, la ventaja que nos ofrecen los Servicios
Web es que podremos integrarlos en cualquier aplicación cliente, independientemente
de la plataforma y el lenguaje sobre el que la desarrollemos.
Vamos a invocar este servicio desde una aplicación Java independiente.
Para ello seguiremos los siguientes pasos:
- Desde el directorio hola ejecutamos el comando:
ant client
Para generar el código necesario para nuestro cliente.
- A continuación compilamos el cliente con el comando:
ant compile
Ahora podemos ejecutar el cliente con proporcionando como parámetro
el nombre, por ejemplo:
ant run -Dnombre=Miguel
Como resultado nos devolverá el mensaje "Hola Miguel".
Que nos mostrará los mensajes SOAP de petición y respuesta
que han intervenido en la invocación del servicio.
2. La página http://www.xmethods.net contiene
una serie de Servicios Web de demostración. En la sección XMethods
Demo Services, en la parte inferior de la página, tenemos una lista
de servicios que podremos integrar en nuestras aplicaciones.
a) Pulsar sobre el servicio Currency Exchange Rate para obtener información
sobre él. Esto nos llevará a una página con documentación
sobre este servicio, además de un enlace al documento WSDL que lo describe.
- Leer la documentación del servicio. ¿Qué función
realiza?
- Descargar el documento WSDL y editarlo. ¿Qué operaciones nos
ofrece el servicio? ¿Qué parámetros toman y que nos devuelven?
- Si pulsamos sobre el link Analyze WSDL, junto al link al documento
WSDL, podremos ver los datos que aporta este documento de forma desglosada.
Podemos ver el nombre del servicio, el puerto, las operaciones y los parámetros
de entrada y datos devueltos por cada una de ellas.
b) Vamos a invocar el servicio mediante un cliente de ejemplo que se encuentra
en el directorio currency.
- Si queremos convertir la divisa europea (euro) a la de EEUU (dolar), ¿qué
operación y qué parámetros debemos proporcionar?
- Generar la clases necesarias para el cliente con:
ant client
Compilar el cliente con:
ant compile
Invocar el siguiente comando desde el directorio currency para
invocar el servicio:
ant run -Dpais1=usa -Dpais2=euro
Esto nos devolverá cuantos euros vale un dolar actualmente.
A continuación ejecutarlo con:
ant run-debug -Dpais1=usa -Dpais2=euro
Esto nos mostrará en la consola los mensajes SOAP de petición
y respuestas que se han utilizado en la invocación del servicio.
¿Qué datos encontramos en cada uno de ellos?
3. Búsqueda de Servicios Web. En este ejercicio vamos
a acceder a un registro UDDI para buscar un servicio.
Amazon ofrece Servicios Web para obtener información sobre
los productos que venden. Vamos a buscar estos servicios en un registro UDDI,
para posteriormente poder integrarlo en nuestras aplicaciones.
a) Acceder a un registro UDDI mediante su interfaz web y buscar el archivo
WSDL que describa los servicios de Amazon.com.
- Podemos acceder al registro de IBM en la dirección:
http://www-3.ibm.com/services/uddi/
Para acceder al registro pulsaremos sobre UDDI V2 Business Registry.
Como sólo vamos a buscar, no hace falta que nos registremos como usuario.
En el menú de la izquierda pulsaremos sobre la opción Find
para buscar servicios.
Vamos a realizar una búsqueda por compañía (business),
ya que buscamos los servicios que ofrece la compañia Amazon.
En el campo Search for a seleccionamos Business. En el campo
Starts with introduciremos el nombre de la compañía
buscada, es decir, Amazon.
Pulsamos sobre Find. Nos mostrará los resultados de la búsqueda.
De los resultados obtenidos, nos interesará obtener información
sobre los servicios que ofrece Amazon.com.
Pulsamos sobre el link Services. Se nos mostrará una lista
con los servicios que ofrece. Pulsaremos sobre el nombre del servicio para
obtener información sobre como acceder a él.
Aquí podremos ver una descripción del servicio, y un enlace
al documento WSDL que lo describe.
b) Abrir el documento WSDL del servicio que ofrece Amazon.
- ¿Cuál es el endpoint del servicio?
- ¿Qué operaciones ofrece el servicio?
- Para la operación DirectorSearchRequest, ¿que parámetros
toma, y que datos devuelve como resultado?
- ¿De que se compone el tipo DirectorRequest?
c) En el directorio amazon, tenemos un cliente que utiliza dicho servicio
para hacer una búsqueda de DVDs teniendo como criterio de búsqueda
el nombre del director.
- Generar la clases necesarias para el cliente con:
ant client
Compilar la aplicación cliente con:
ant compile
- Una vez compilado, podremos hacer una búsqueda por director con:
ant run -Ddirector=nombre_director
Por ejemplo, podriamos buscar las películas en DVD de David Lynch,
o de Stanley Kubrick:
ant run -Ddirector=lynch
ant run -Ddirector=kubrick
Con esto veremos los títulos de las películas encontradas en
Amazon.
- Podemos ver los mensajes SOAP que está enviando y recibiendo nuestro
programa internamente utilizando el comando:
ant run-debug -Ddirector=nombre_director
Podemos redireccionar los mensajes a un fichero, para poder visualizarlos
en cualquier editor:
ant run-debug -Ddirector=lynch > log
- Observar el mensaje de la petición SOAP.
- ¿Qué operación se invoca?
- ¿Qué parámetros se proporcionan?
- ¿De que información se compone el parámetro suministrado?
- Ahora observar el mensaje de respuesta. ¿Qué información
nos devuelve el servicio?