tema vi. servicios web ii. jax-ws
TRANSCRIPT
Í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
XMLSchema
DocumentoXML
ClaseClaseObjetos
ClaseClaseClases
compila a (xjc)
desaplana (unmarshal)
instancia devalida
aplana (marshal)
sigue
genera (schemagen)
Í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)Publicación del Servicio
Implementación del Servicio (SIB)
*Ejemplo basado en el propuesto en el libro “Java Web Services Up and Running”
Cliente
Í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 RunningKalin, M. – O'Reilly [2009]
● JAXB Tutorial: http://jaxb.java.net/tutorial/ [última visita 25/11/12]