Servicios Web
Servicios web
• Son programas con funcionalidad accesible
a través de protocolo http que permiten la
ejecución remota de métodos y funciones
• Los clientes envían solicitudes de ejecución
de métodos y funciones y sus argumentos
• Los servidores responden enviando los
resultados solicitados
Servicios web, II
• Java EE 6 incluye “grandes” servicios web
(basados en la especificación JAX-WS) y
servicios web “reposados” (basados en la
especificación JAX-RS)
• Los servicios reposados optimizan el
ancho de banda y son más sencillos de
desarrollar
Servicios web, III
• Los grandes servicios web transmiten la
información a través de un protocolo
universal basado en XML, llamado SOAP
• Mediante servicios web, programas
escritos con tecnologías diferentes (Java
EE, .NET) pueden compartir información y
procedimientos de acceso a ella
estandarizados
Servicios web, IV
• La utilización de un servicio web involucra:
– Un programa servidor capaz de publicar a
través de un registro referencias a objetos
servidores y a sus métodos y de serializar y
desserializar objetos.
– Un protocolo de publicación y acceso a
métodos y a objetos serializados.
– Un programa cliente capaz de acceder a
referencias publicadas de objetos servidores,
de hacer llamadas a sus métodos y de
serializar y desserializar otros objetos.
Ejercicio para clase [SW0]
• Describir un servicio web con una clase
servidora que publica dos métodos
• Describir una aplicación web que utiliza el
servicio anterior
• Se deberá entregar un documento de
Word con la descripción del servicio al
nivel de abstracción y detalle en que se
han definido los servicios web en las
transparencias anteriores
Grandes servicios web:
Requisitos
• Las clases cuyas instancias son objetos
servidores se anotan mediante @WebService.
Los métodos accesibles públicamente se anotan
mediante @WebMethod.
• Una herramienta auxiliar, wsgen, genera
artefactos necesarios para el despliegue del
servicio, incluyendo ficheros de clase que los
clientes pueden cargar a través de la red.
Grandes servicios web:
Restricciones
• Los @WebServices han de tener un
constructor sin argumentos
• Los @WebMethods tienen que ser
públicos
• Los argumentos y los objetos devueltos
por @WebMethods tienen que ser tipos
simples o Java Beans.
Implementación de servicios web
desde NetBeans
ATENCIÓN: En los ejercicios se deben
implementar los servicios web en la forma
que se describe a continuación.
• Crear un proyecto de aplicación web
(también se puede hacer con una
aplicación Enterprise).
• Crear el servicio web desde el proyecto,
con un paquete. Netbeans crea la clase
@WebService asociada, cuyo nombre es
el del servicio.
Implementación de servicios
web desde NetBeans, II
• Definir los Beans auxiliares y los
@WebMethods.
• Al construir y desplegar la aplicación,
Netbeans ejecuta wsgen y gestiona la
publicación del servicio.
• Se puede probar el servicio desde un
navegador seleccionando la opción “Test”
sobre el mismo.
Ejercicio para clase [SW1]
• Implementar el servicio web propuesto en
la primera parte de este ejercicio, y
comprobar su funcionamiento correcto
Ejemplo de servicio web
• Una aplicación que permite buscar
documentos que contienen una palabra y
devolverlos ordenados según el número
de veces que aparece la palabra se puede
implementar como sigue:
– Clase servidora: Buscador
• Método accesible: List<Doc> busca(palabra)
– Bean auxiliar: Doc
Ejemplo de servicio web, II
• @WebService
public class Buscador {…
@WebMethod
List<Doc> busca(String palabra)
• class Doc {
int apariciones(String palabra)
… // Métodos set y get
}
}
Esquema del funcionamiento de
servicios web
registro
objRef
objRef.f(arg)
Cliente
Interfaz común
obj
obj.f(arg)
Servidor
Implementación desde NetBeans
de aplicaciones Java clientes
• Crear un proyecto de aplicación Java
• Crear el cliente del servicio web desde el
proyecto. Netbeans pide la URL de
acceso y el paquete
– La URL de acceso es la de la aplicación web
del servidor seguida del nombre del servicio
terminado con “Service?wsdl”
– El paquete es el del servicio seguido de
“.client”
Implementación desde NetBeans
de aplicaciones Java clientes, II
• Netbeans accede a la URL e importa en el
paquete del cliente las clases necesarias
para el cliente:
– Referencias al servicio: La clase tiene el
nombre del servicio seguido de “Service”
(BuscadorService en el ejemplo)
• Método de obtención de referencias a objetos
servidores: getXXXPort(), donde XXX es el nombre
del servicio (getBuscadorPort en el ejemplo)
– Referencias a objetos servidores: La clase
tiene el nombre del servicio (Buscador en el
ejemplo) y tiene los métodos publicados
Implementación desde NetBeans
de aplicaciones Java clientes, III
• Incluir en el proyecto del cliente las clases
de los Java Beans requeridos
(argumentos y objetos devueltos por los
métodos disponibles; Doc en el ejemplo)
ATENCIÓN: En los ejercicios se deben
implementar los clientes de servicios web
en la forma descrita en las últimas
transparencias.
Programación del cliente
• Esquema de funcionamiento del cliente:
– Instanciar una referencia al servicio
– Obtener una referencia a un objeto servidor
– Ejecutar métodos …
Ejemplo de cliente
public class BuscadorClient { …
public static void main(String[] args) {
ws.client.BuscadorService serv =
new ws.client.BuscadorService();
ws.client.Buscador busc =
serv.getBuscadorPort();
List<Doc> rec = busc.busca(“servidor”);
…
Depuración
• Wsmonitor (wsmonitor.dev.java.net)
permite interceptar las llamadas de SOAP.
• Para la depuración el cliente debe hacer
las peticiones en el puerto 4040, donde
escucha Wsmonitor; éste las replica al
puerto 8080
• El monitor muestra las solicitudes y
respuestas (formato XML)
Ejercicio para clase [SW2]
• Implementar una de las aplicaciones Java
propuestas por otro compañero que
accede a un servicio web, y comprobar el
funcionamiento correcto de la aplicación y
del servicio
Ejercicio obligatorio [SWCC]
• Implementar un servicio web que permita
gestionar las cuentas corrientes incluidas en dos
bases de datos, haciendo las siguientes
operaciones:
– Pedir la lista total de clientes.
– Pedir el saldo total de las cuentas de un cliente.
• Implementar una aplicación web que permita al
usuario introducir el identificador de una
persona y le devuelva su saldo total obtenido
accediendo al servicio web anterior.
Ejercicio optativo [SWJSF]
• Aplicación web con dos páginas JSF que:
– La primera muestra la lista de clientes
ofrecida por el servicio web anterior y permite
seleccionar uno
– La segunda muestra el saldo total del cliente
selecionado, proporcionado por el servicio
web anterior
Descargar

Document