250 likes | 393 Views
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
E N D
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 obj Interfaz común objRef.f(arg) obj.f(arg) Cliente 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