Integración de aplicaciones
Java se centra en las API XML para Java tales como JAXP, JAXB, JAX-RPC, JAX-WS, etc. También hace una pequeña introducción a JMS.
2. Introducción
Integración de aplicaciones
Necesidad de integrar entornos.
Aplicaciones desarrolladas con diferentes
tecnologías, frameworks, etc. incluso lenguajes.
Reutilización de funcionalidades.
Varias alternativas:
• JAVA XML APIs
• JMS
• JBI
4. XML
Conceptos básicos
XML hace los datos portables.
APIs Java para XML hacen fácil el uso del XML.
Se consigue: Portabilidad de datos, portabilidad de
codigo y facilidad de uso.
XML ayuda a la integración de aplicaciones y
plataformas.
5. XML
Qué es XML
XML = eXtensible Markup Language
Estándar industrial para representar datos,
independiente del sistema.
Las etiquetas XML especifican el contenido y la
estructura de los datos.
Extensibilidad: podemos crear las etiquetas que
necesitemos para un tipo de documento en particular.
6. XML
DTD
Document Type Definition.
Lenguaje que permite definir nuestros propios tipos de
documentos XML.
Sintaxis no basada en XML.
7. XML
XML esquema
Lenguaje de esquema utilizado para describir la
estructura
Desarrollado por World Wide Web Consortium (W3C)
Describe la estructura de un conjunto de documentos
XML.
Es un lenguaje de esquema escrito en XML.
Usualmente extensión .xsd (XML Schema Definition).
8. XML
XML esquema
Sintaxis basada en XML.
XML Schema supera muchas de las limitaciones y
debilidades de los DTDs.
Diseñado alrededor de namespaces ≈ package.
Soporta tipos de datos típicos de los lenguajes de
programación.
Permite procesado con herramientas capaces de
procesar XML.
Mayor capacidad expresiva (sobre todo en tipos).
9. XML
XML esquema vs DTD
Ejemplo de DTD: aquí
Declaraciones de elementos: ELEMENT.
Declaraciones de atributos de un elemento: ATTLIST.
Cardinalidad (elementos opcionales, con 0 o más
apariciones, ...) y ordinalidad (secuencia de aparición)
de los elementos.
Valores de atributos implícitos (atributos opcionales),
requeridos (atributos obligatorios) y por defecto.
10. XML
XML esquema vs DTD
Ejemplo de DTD: aquí
Valores de atributo enumerados (el atributo sólo
puede tomar un valor de entre un conjunto finito).
Atributos de tipo ID (caracterizan unívocamente a un
elemento en un documento y sólo pueden tomar
valores que sean identificadores XML válidos)
11. XML
XML esquema vs DTD
Ejemplo de XML Schema: aquí.
Sintaxis XML.
Definiciones de tipos y uso de tipos básicos:
XMLSchema tiene un tipado más fuerte que DTD.
Definiciones de elementos complejos, compuestos
por otros.
Declaraciones de elementos: xsd:element.
Declaraciones de atributos de un elemento:
xsd:attribute.
12. XML
XML esquema vs DTD
Ejemplo de XML Schema: aquí.
Cardinalidad (elementos opcionales, con 0 o más
apariciones, ...) y ordinalidad (secuencia de aparición)
de los elementos.
Valores de atributos implícitos (atributos opcionales),
requeridos (atributos obligatorios) y por defecto.
Mayor complejidad y menor legibilidad que DTD.
14. WSDL
Conceptos básicos
WSDL: Web Services Description Language.
XML que se utiliza para describir servicios Web.
Describe la interfaz pública de los servicios Web.
El cliente sólo necesita WSDL para hacer llamadas a
los métodos disponibles en el WS.
Sistema portable.
Estandarizado por el W3C.
15. WSDL
Tipos primitivos
(*) El mapping por defecto para byte[ ] es xsd:base64Binary. Los datos pasados
como byte[ ] se entienden como strings codificados en formato base64. Un
formato alternativo es xsd:hexBinary.
19. JAVA XML APIs
Listado de APIs
JAXP: Java API for XML Processing.
JAXM: Java API for XML Messaging.
JAX-RPC: Java API for XML-based RPC.
JAX-WS: Java API for XML Web Services.
JAXR: Java API for XML Registries.
JAX-RS: Java API for RESTful Web Services.
JAXB: Java Architecture for XML Binding, or JAXB.
StAX: STreaming XML processing, or StAX.
20. JAXP
Conceptos básicos
Provee la posibilidad de validar, parsear, transformar
y hacer querys sobre documentos XML.
Las tres interfaces básicas de parseo son:
• DOM: Document Object Model parsing interface.
• SAX: Simple API for XML parsing interface
• StAX: Streaming API for XML (parte de JDK 6; jar
separado disponible para JDK 5)
Además, provee XSLT interface → transformaciones.
21. JAXP
JAXP - DOM
Parsea un documento cargándolo en memoria por
completo.
Todo en memoria → es posible acceder o modificar
cualquier elemento en acceso aleatorio.
El parser DOM se llama DocumentBuilder.
Se carga el XML en una estructura con forma de
árbol.
No recomendado para grandes documentos por el
consumo de memoria.
22. JAXP
JAXP – DOM (JDOM)
Biblioteca de código abierto para manipulaciones de
datos XML optimizados para Java.
DOM lenguaje neutral → JDOM específicamente para
usarse con Java.
Pensada especialmente para Java y por tanto mejor
integrada en este lenguaje.
Facilidad de uso (para programadores Java).
http://jdom.org/
24. JAXP
JAXP - SAX
Procesa la información por eventos.
Mejor que DOM para manipular archivos grandes, ya
que no genera un árbol en memoria.
Se recorre XML de manera secuencial.
Permite acceso a datos pero no modificarlos.
El parseo de SAX se puede detener en cualquier
momento.
26. JAXM
Conceptos básicos
Provee una manera estándar de enviar XML sobre
Internet a través de la plataforma Java.
Se basa en SOAP* 1.1 y SOAP con Attachments.
API de mensajería de peso ligero para el desarrollo
de aplicaciones de mensajería de negocios basada en
XML.
Soporta tanto mensajes asíncronos como síncronos.
* SOAP = Simple Object Access Protocol
27. JAXM
Desventajas
JAXM fuerza a los desarrolladores a trabajar
con los objetos SOAP. JAX-RPC provee un nivel más
alto.
JAX-RPC provee un framework basado en WSDL
que oculta los detalles de SOAP.
JAXM no usa WSDL → El desarrollador debe
construir los mensajes “a mano” y enviarlos o
procesarlos explícitamente.
28. JAXM
Obteniendo conexiones
//Conexión punto a punto
SOAPConnectionFactory factory = SOAPConnectionFactory.newInstance();
The client can use factory to create a SOAPConnection object.
SOAPConnection con = factory.createConnection();
//Conexión al Messaging Provider
ProviderConnectionFactory pcFactory = ProviderConnectionFactory.newInstance();
ProviderConnection pcCon = pcFactory.createConnection();
35. JAX-RPC
Conceptos básicos
Permite invocar Servicios Web conociendo su
descripción.
Servicios web se describen mediante WSDL.
JAX-RPC 2.0 se renombró a JAX-WS 2.0
JAX-RPC 1 está deprecado con Java EE 6.
Proporciona compilador de WSDL a Java.
Proporciona compilador de Java a WSDL.
36. JAX-RPC
Funcionamiento
1. Un programa Java invoca un método de un stub
(objeto local que representa un servicio remoto).
2. El stub invoca rutinas del JAX-RPC Runtime
System (RS).
3. El RS convierte la invocación del método
remoto en un mensaje SOAP.
4. El RS transmite el mensaje por HTTP.
39. JAX-WS
Conceptos básicos
API Java para la creación de Web Service.
Forma parte del estándar J2EE.
JAX-WS 2.0 reemplaza al API JAX-RPC.
Usa annotations (Java SE 5) para simplificar el
desarrollo y el despliegue de los WS y los clientes.
JAX-WS RI (Reference Implementation): Parte del
proyecto GlassFish.
Incluye: Java Architecture for XML Binding (JAXB)
and SOAP with Attachments API for Java (SAAJ) 1.3.
41. JAX-WS
JAX-WS vs JAX-RPC
SOAP 1.2: JAX-RPC y JAX-WS soportan SOAP 1.1.
JAX-WS también soporta SOAP 1.2.
Modelo de mapeo de datos: JAX-RPC tiene su
propio modelo de mapeo de datos. JAX-WS usa JAXB
para el mapeo de datos.
MTOM (Message Transmission Optimization
Mechanism):JAX-WS (mediante JAXB) añade soporte
para MTOM.
JAX-RPC vs JAX-WS: 1, 2, 3, 4, 5
42. JAX-WS
Ejemplo básico
import javax.jws.WebService;
@WebService
public class CircleFunctions {
public double getArea(double r) {
return java.lang.Math.PI * (r * r);
}
public double getCircumference(double r) {
return 2 * java.lang.Math.PI * r;
}
}
44. JAXR
Conceptos básicos
Proporciona acceso a registros de negocios
estándars sobre Internet.
Las implementaciones actuales soportan ebXML
Registry version 2.0 y UDDI version 2.0.
Registros de negocios = “páginas amarillas
electrónicas” que contienen listados de negocios y los
productos o servicios que los negocios ofrecen.
46. JAXR
¿Qué es un Registro XML?
Infrastructura que permite construir, desplegar y
descubrir servicios web.
Es una parte neutral que facilita las interacciones
dinámicas business-to-business (B2B).
Un registro está disponible para las organizaciones
como un recurso compartido, a menudo como servicios
web.
Tipos: UDDI, ebXML, etc.
48. JAXR
ebXML
Electronic Business using eXtensible Markup
Language (e-business XML or ebXML).
Basado en estándares XML.
Apoyado por OASIS y UN/CEFACT.
Agiliza las relaciones comerciales.
51. JAXR
UDDI - Universal Description Discovery and Integration
Registro XML que proporciona mecanismos estándar
para las empresas para describir y publicar sus
servicios, descubrir otras empresas, e integrarse:
• Páginas Amarillas: Se registran empresas y los
servicios que ofrecen.
• Páginas Blancas: direcciones de trabajo e
información de contacto.
• Páginas Verdes: información técnica sobre los
servicios. Se incluyen detalles técnicos suficientes
para invocar un servicio determinado.
52. JAXR
UDDI - APIs
API de publicación: Métodos para guardar
información: save_business, save_service,
save_binding, etc.
API de investigación: Métodos para consultar el
registro: find_service, get_businessDetail,
get_serviceDetail, get_bindingDetail, etc.
55. JAX-RS
Conceptos básicos
Permite crear WS siguiendo arquitectura REST
(Representational State Transfer).
JAX-RS usa annotations (Java SE 5).
Las comunicaciones se hace a través de HTTP
utilizando las operaciones que este protocolo pone a
disposición: POST, GET, PUT y DELETE.
56. JAX-RS
REST – Conceptos básicos
Alternativa a SOAP y a WS basados en WSDL.
Grandes compañías Web 2.0 están migrando/han
migrado a REST (Yahoo, Google, Facebook, etc.).
Los 4 principios de REST:
• Utiliza los métodos HTTP de manera explícita.
• No mantiene estado.
• Expone URIs con forma de directorios.
• Transfiere XML, JavaScript Object Notation
(JSON), o ambos.
57. JAX-RS
REST y HTTP
Establece una asociación uno-a-uno entre las
operaciones crear, leer, actualizar y borrar, y los
métodos HTTP:
• POST → crear un recurso en el servidor.
• GET → obtener un recurso.
• PUT → cambiar el estado de un recurso o
actualizarlo.
• DELETE → eliminar un recurso.
59. JAX-RS
REST – Cuándo usarlo
Servicios orientados a recursos (la 'R'-EST) públicos,
Basados en HTTP.
Usables desde clientes de una aplicación web (los
llama el navegador del usuario mediante AJAX).
Con un interfaz muy sencillo (para cargar una lista o
una tabla).
Basados principalmente en búsquedas (Google).
Típico ejemplo: servicio de provincias-municipios.
60. JAX-RS
Implementaciones de JAX-RS
Apache CXF: Open source Web service framework.
Jersey: Implementación de referencia de Sun (now
Oracle).
RESTEasy: Implementación de JBoss.
Restlet: Desarrollado por Jerome Louvel and Dave
Pawson (pioneros en frameworks REST).
Apache Wink: Proyecto de la Apache Software
Foundation.
62. JAXB
Conceptos básicos
Permite mapear clases a XML y viceversa.
Dos acciones principales:
• Marshal: Objetos Java → XML.
• Acceso y actualización de datos.
• Unmarshal: XML → Objetos Java.
Es parte de Java SE, una API de la plataforma J2EE
y parte del Java Web Services Development Pack
(JWSDP).
Integración con varios IDEs (p.e. Eclipse).
64. JAXB
Porqué usar JAXB
Usa tecnología Java y XML.
Garantiza datos válidos.
Es rápida.
Es fácil de usar.
Puede restringir datos.
Es personalizable.
Es extensible.
67. JMS
Conceptos básicos
Java Message Service (Servicio de mensajes Java).
Solución Java para el uso de colas de mensajes.
Estándar de mensajería que permite a aplicaciones
crear, enviar, recibir y leer mensajes.
JMS se sitúa como middleware en medio de la
comunicación de dos aplicaciones.
Permite comunicación síncrona y asíncrona.
69. JMS
Ventajas
No se necesitan conocer (Ips, direcciones, etc.) los
clientes para que se comuniquen entre sí.
JMS soporta comunicación punto a punto.
JMS soporta Publisher/Subscriber.
Comunicación síncrona y asíncrona.
Integración entre diferentes plataformas, entornos,
lenguajes, etc.
70. JMS
Ejemplos de sistemas de MQ
WebSphere MQ de IBM (antes MQ*Series)
Message Queue de Microsoft (MSMQ)
Java Message Service de Sun (JMS)
Data Distribution Service del OMG (DDS)