Upload
luz-valentino
View
214
Download
0
Embed Size (px)
Citation preview
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
• @WebServicepublic class Buscador { …
@WebMethodList<Doc> busca(String palabra) }
• class Doc {int apariciones(String palabra)… // Métodos set y get }
Esquema del funcionamiento de servicios web
ServidorCliente
obj.f(arg)objRef.f(arg)
objobjRef
registro
Interfaz común
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