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]