Download Tema VI. Servicios Web
Document related concepts
no text concepts found
Transcript
Tema VI. Servicios Web II. JAX-WS Desarrollo de Aplicaciones para Internet Curso 12|13 Índice 1.Introducción 2.JAXB 3.JAX-WS i. Definición de Servicios ii. Anotaciones Principales iii.Clases Principales 4.Ejemplos i. Ejemplo Servicio Tiempo ii. Ejemplo Servicio Calculadora 5.Referencias Índice 1.Introducción 2.JAXB 3.JAX-WS i. Definición de Servicios ii. Anotaciones Principales iii.Clases Principales 4.Ejemplos i. Ejemplo Servicio Tiempo ii. Ejemplo Servicio Calculadora 5.Referencias Servicios Web en Java ● Soportados por el API JAX-WS de Java 6 SE ● Versiones – Versión 1 – JAX-RPC – Versión 2 – JAX-WS (Actual) ● JAX-WS hace uso intensivo de JAXB ● Está formada por – Bibliotecas para el trabajo con servicios Web (definición de servicios, publicación, solicitud, etc.) – Herramientas de línea de comandos para generar código Índice 1.Introducción 2.JAXB 3.JAX-WS i. Definición de Servicios ii. Anotaciones Principales iii.Clases Principales 4.Ejemplos i. Ejemplo Servicio Tiempo ii. Ejemplo Servicio Calculadora 5.Referencias JAXB ● JAX Bindings – Conjunto de utilidades que permiten la conversión de clases y objetos en XML Schemas y XMLs y viceversa – Proporciona una serie de anotaciones para configurar la generación de XML – También incluye las herramientas ● ● xjc: Compilador que permite convertir un XML Schema en clases Java schemagen: Utilidad que permite generar un XML Schema a partir de clases Java Esquema JAXB compila a (xjc) XML Schema sigue genera (schemagen) valida desaplana (unmarshal) Documento XML aplana (marshal) Clase Clase Clases instancia de Clase Clase Objetos Índice 1.Introducción 2.JAXB 3.JAX-WS i. Definición de Servicios ii. Anotaciones Principales iii.Clases Principales 4.Ejemplos i. Ejemplo Servicio Tiempo ii. Ejemplo Servicio Calculadora 5.Referencias Definición de Servicios ● ● La definición de servicios en JAX-WS se realiza mediante la anotación de clases e interfaces Java recomienda crear los servicios en dos partes – Service Endpoint Interface (SEI) ● – Interfaz que declara los métodos que serán publicados Service Implementation Bean (SIB) ● Clase que implementa la SEI Definición de Servicios ● JAX-WS saca provecho de JAX-B para convertir beans de Java en XML – Los beans son clases con constructor vacío y getters y setters – Genera los elementos asociados a los beans para poder construir el WSDL – Es responsable de aplanar/desaplanar objetos para poder enviarlos como parte de los mensajes SOAP – Tiene ciertas limitaciones (p.ej. no puede trabajar directamente con interfaces) Índice 1.Introducción 2.JAXB 3.JAX-WS i. Definición de Servicios ii.Anotaciones Principales iii.Clases Principales 4.Ejemplos i. Ejemplo Servicio Tiempo ii. Ejemplo Servicio Calculadora 5.Referencias Anotaciones Principales ● ● javax.jws.WebService – Indica que una clase o interfaz son un servicio Web – Permite configurar varios parámetros del servicio Web (nombre, nombre del servicio, nombre del puerto, etc.) javax.jws.WebMethod – Indica que un método es una operación del servicio Web – Permite configurar varios parámetros de la operación (nombre de la operación, excluirlo explícitamente como operación y la acción de la operación) Anotaciones Principales ● ● javax.jws.WebParam – Permite configurar el mapeo de los parámetros de las operaciones – No suele ser necesario su uso javax.jws.Oneway – ● Indica que una operación no devuelve valores (no se genera un mensaje SOAP de respuesta) javax.jws.soap.SOAPBinding – Permite configurar el modo en el que se hará el binding – Es especialmente útil el atributo “style”, cuyo valor puede ser ● ● SOAPBinding.Style.RPC SOAPBinding.Style.DOCUMENT Índice 1.Introducción 2.JAXB 3.JAX-WS i. Definición de Servicios ii. Anotaciones Principales iii.Clases Principales 4.Ejemplos i. Ejemplo Servicio Tiempo ii. Ejemplo Servicio Calculadora 5.Referencias Clases Principales ● ● javax.ws.Endpoint – Representa un punto final asociado a un servicio – Los Endpoint se crean mediante métodos estáticos de la propia clase – Un Endpoint puede estar publicado o no publicado – Soportan peticiones paralelas mediante el uso de un Executor (ver método setExecutor) javax.xml.namespace.QName – Representa un nombre cualificado – Permite hacer referencia a un servicio con los parámetros ● ● 1º URI del servicio 2º Nombre del servicio publicado Clases Principales ● javax.xml.ws.Service – Actúa de cliente de un servicio web – Se crea mediante métodos estáticos que vinculan los Service con servicios Web remotos – Dan acceso a los puertos remotos, devolviendo un stub del objeto de servicio remoto Índice 1.Introducción 2.JAXB 3.JAX-WS i. Definición de Servicios ii. Anotaciones Principales iii.Clases Principales 4.Ejemplos i. Ejemplo Servicio Tiempo ii. Ejemplo Servicio Calculadora 5.Referencias Ejemplo Servicio Tiempo ● ● Este ejemplo es el visto en la primera parte del tema Lo repasaremos de nuevo para analizar las anotaciones y clases empleadas Ejemplo Servicio Tiempo Interfaz del Servicio (SEI) Implementación del Servicio (SIB) Publicación del Servicio Cliente *Ejemplo basado en el propuesto en el libro “Java Web Services Up and Running” Índice 1.Introducción 2.JAXB 3.JAX-WS i. Definición de Servicios ii. Anotaciones Principales iii.Clases Principales 4.Ejemplos i. Ejemplo Servicio Tiempo ii.Ejemplo Servicio Calculadora 5.Referencias Ejemplo Servicio Calculadora ● Puedes encontrar el código de este ejemplo en Faitic – CalculatorService.tar.gz: Contiene el ejemplo básico con métodos sencillos – CalculatorServiceFull.tar.gz: Contiene un ejemplo un poco más avanzado con tipos de datos más complejos. Incluye un ejemplo de trabajo con mapas Índice 1.Introducción 2.JAXB 3.JAX-WS i. Definición de Servicios ii. Anotaciones Principales iii.Clases Principales 4.Ejemplos i. Ejemplo Servicio Tiempo ii. Ejemplo Servicio Calculadora 5.Referencias Referencias ● Java Web Services: Up and Running Kalin, M. – O'Reilly [2009] ● JAXB Tutorial: http://jaxb.java.net/tutorial/ [última visita 25/11/12]