Integración de aplicaciones Java

71
Integración de aplicaciones Java

description

Integración de aplicacionesJava 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.

Transcript of Integración de aplicaciones Java

Integración de aplicaciones Java

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

XML

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.

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.

XML

DTD

Document Type Definition.

Lenguaje que permite definir nuestros propios tipos de documentos XML.

Sintaxis no basada en XML.

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).

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).

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.

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)

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.

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.

WSDL

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.

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.

WSDL

Clases estándar

WSDL

Proceso de desarrollo

JAVA XML APIs

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.

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.

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.

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/

JAXP

EJEMPLOS JAXP - DOM

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.

JAXP

EJEMPLOS JAXP - SAX

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

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.

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();

JAXM

Creando un mensajeMessageFactory messageFactory = MessageFactory.newInstance();

SOAPMessage m = messageFactory.createMessage();

SOAPPart sp = m.getSOAPPart();

SOAPEnvelope envelope = sp.getSOAPEnvelope();

SOAPBody body = envelope.getSOAPBody();

SOAPBodyElement bodyElement = body.addBodyElement(

envelope.createName("text", "hotitems", "http://hotitems.com/products");

bodyElement.addTextNode("some-xml-text");

JAXM

Creando un mensaje con DOMMessageFactory messageFactory = MessageFactory.newInstance();

SOAPMessage m = messageFactory.createMessage();

SOAPPart soapPart = message.getSOAPPart();

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder db = dbf.newDocumentBuilder();

Document doc = db.parse("file:///foo.bar/soap.xml");

DOMSource domSource = new DOMSource(doc);

soapPart.setContent(domSource);

JAXM

Enviando mensajeSOAPMessage response = soapConnection.call(message, endpoint);

//Usando un Messaging Provider

providerConnection.send(message);

JAXM

Ejemplo mensaje SOAP

EJEMPLO SOAP

JAXM

JAXM + Otros elementos B2B

JAXM

EJEMPLOS JAXM

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.

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.

JAX-RPC

Funcionamiento

JAX-RPC

EJEMPLOS JAX-RPC

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.

JAX-WS

JAX-WS Escenario

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

JAX-WS

Ejemplo básico

import javax.jws.WebService;

@WebServicepublic 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; }}

JAX-WS

EJEMPLOS JAX-WS

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.

JAXR

Arquitectura

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.

JAXR

Uso de registros

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.

JAXR

ebXML – Escenario sin ebXML

JAXR

ebXML – Escenario con ebXML

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.

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.

JAXR

UDDI – Escenario

JAXR

EJEMPLOS JAXR

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.

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.

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.

JAX-RS

REST y HTTP

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.

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.

JAX-RS

EJEMPLOS JAX-RS

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).

JAXB

Arquitectura

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.

JAXB

EJEMPLOS JAXB

JMS

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.

JMS

Escenario de ejemplo

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.

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)

FINIntegración de aplicaciones

Java

Iker [email protected]