SlideShare uma empresa Scribd logo
1 de 71
Baixar para ler offline
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 mensaje
MessageFactory 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 DOM
MessageFactory 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 mensaje
SOAPMessage 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;

   @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;
      }
   }
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)
Integración de aplicaciones
            Java

          FIN
                               Iker Canarias
                   iker.canarias@gmail.com

Mais conteúdo relacionado

Mais procurados

radius dhcp dot1.x (802.1x)
radius dhcp dot1.x (802.1x)radius dhcp dot1.x (802.1x)
radius dhcp dot1.x (802.1x)rinnocente
 
Windows Communication Foundation (WCF)
Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)
Windows Communication Foundation (WCF)Peter R. Egli
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2Ido Flatow
 
Linux Serial Driver
Linux Serial DriverLinux Serial Driver
Linux Serial Driver艾鍗科技
 
Simultaneously Leveraging Linux and Android in a GENIVI compliant IVI System
Simultaneously Leveraging Linux and Android in a GENIVI compliant IVI System Simultaneously Leveraging Linux and Android in a GENIVI compliant IVI System
Simultaneously Leveraging Linux and Android in a GENIVI compliant IVI System mentoresd
 
Começando com Vue.js
Começando com Vue.jsComeçando com Vue.js
Começando com Vue.jsmarcusbalbi
 
UDA-Anexo gestión de seguridad
UDA-Anexo gestión de seguridadUDA-Anexo gestión de seguridad
UDA-Anexo gestión de seguridadAnder Martinez
 
Introducing HTTP/2
Introducing HTTP/2Introducing HTTP/2
Introducing HTTP/2Ido Flatow
 
Lecture 2_ Intro to laravel.pptx
Lecture 2_ Intro to laravel.pptxLecture 2_ Intro to laravel.pptx
Lecture 2_ Intro to laravel.pptxSaziaRahman
 
강좌 06 부트로더
강좌 06 부트로더강좌 06 부트로더
강좌 06 부트로더chcbaram
 
UDA-Componentes RUP. Tabla.v2.4.6
UDA-Componentes RUP. Tabla.v2.4.6UDA-Componentes RUP. Tabla.v2.4.6
UDA-Componentes RUP. Tabla.v2.4.6Ander Martinez
 
Multi-signed Kernel Module
Multi-signed Kernel ModuleMulti-signed Kernel Module
Multi-signed Kernel ModuleSUSE Labs Taipei
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event HandlingWebStackAcademy
 
Insights on the Configuration and Performances of SOME/IP Service Discovery
Insights on the Configuration and Performances of SOME/IP Service DiscoveryInsights on the Configuration and Performances of SOME/IP Service Discovery
Insights on the Configuration and Performances of SOME/IP Service DiscoveryRealTime-at-Work (RTaW)
 

Mais procurados (20)

FreeRTOS API
FreeRTOS APIFreeRTOS API
FreeRTOS API
 
ClearCase Basics
ClearCase BasicsClearCase Basics
ClearCase Basics
 
radius dhcp dot1.x (802.1x)
radius dhcp dot1.x (802.1x)radius dhcp dot1.x (802.1x)
radius dhcp dot1.x (802.1x)
 
Windows Communication Foundation (WCF)
Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)
Windows Communication Foundation (WCF)
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
 
Linux Serial Driver
Linux Serial DriverLinux Serial Driver
Linux Serial Driver
 
Simultaneously Leveraging Linux and Android in a GENIVI compliant IVI System
Simultaneously Leveraging Linux and Android in a GENIVI compliant IVI System Simultaneously Leveraging Linux and Android in a GENIVI compliant IVI System
Simultaneously Leveraging Linux and Android in a GENIVI compliant IVI System
 
Começando com Vue.js
Começando com Vue.jsComeçando com Vue.js
Começando com Vue.js
 
Exposicion JSF
Exposicion JSFExposicion JSF
Exposicion JSF
 
UDA-Anexo gestión de seguridad
UDA-Anexo gestión de seguridadUDA-Anexo gestión de seguridad
UDA-Anexo gestión de seguridad
 
Introducing HTTP/2
Introducing HTTP/2Introducing HTTP/2
Introducing HTTP/2
 
Lecture 2_ Intro to laravel.pptx
Lecture 2_ Intro to laravel.pptxLecture 2_ Intro to laravel.pptx
Lecture 2_ Intro to laravel.pptx
 
강좌 06 부트로더
강좌 06 부트로더강좌 06 부트로더
강좌 06 부트로더
 
laravel.pptx
laravel.pptxlaravel.pptx
laravel.pptx
 
UDA-Componentes RUP. Tabla.v2.4.6
UDA-Componentes RUP. Tabla.v2.4.6UDA-Componentes RUP. Tabla.v2.4.6
UDA-Componentes RUP. Tabla.v2.4.6
 
Multi-signed Kernel Module
Multi-signed Kernel ModuleMulti-signed Kernel Module
Multi-signed Kernel Module
 
Introdução Vue JS
Introdução Vue JSIntrodução Vue JS
Introdução Vue JS
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event Handling
 
Insights on the Configuration and Performances of SOME/IP Service Discovery
Insights on the Configuration and Performances of SOME/IP Service DiscoveryInsights on the Configuration and Performances of SOME/IP Service Discovery
Insights on the Configuration and Performances of SOME/IP Service Discovery
 
Win idea manual
Win idea manualWin idea manual
Win idea manual
 

Destaque

Xml Java
Xml JavaXml Java
Xml Javacbee48
 
Tema 3 xml processing ap is
Tema 3   xml processing ap isTema 3   xml processing ap is
Tema 3 xml processing ap isxkorpium
 
Actualités Information Jeunesse Val-d'Oise
Actualités Information Jeunesse Val-d'OiseActualités Information Jeunesse Val-d'Oise
Actualités Information Jeunesse Val-d'OiseInfoJeunesse ValdOise
 
Uniques labs l'accompagnement
Uniques labs l'accompagnement Uniques labs l'accompagnement
Uniques labs l'accompagnement uniquelabs
 
Fleurs, arbres et plantes
Fleurs, arbres et plantesFleurs, arbres et plantes
Fleurs, arbres et plantesaurelieh
 
Recrutement oma v3
Recrutement oma v3Recrutement oma v3
Recrutement oma v3b2rb2r
 
Plan de relance 2
Plan de relance 2Plan de relance 2
Plan de relance 2lafontaine
 
Pour l'être aimer By Shany
Pour l'être aimer By ShanyPour l'être aimer By Shany
Pour l'être aimer By Shanyguestd46df9
 
La veille de Red Guy du 24.05.12 : DIY (Do it yourself)
La veille de Red Guy du 24.05.12 : DIY (Do it yourself)La veille de Red Guy du 24.05.12 : DIY (Do it yourself)
La veille de Red Guy du 24.05.12 : DIY (Do it yourself)Red Guy
 
Tecnología de la información y la comunicación
Tecnología de la información y la comunicaciónTecnología de la información y la comunicación
Tecnología de la información y la comunicaciónRaul Vega
 
Números Romanos
Números RomanosNúmeros Romanos
Números RomanosLcantillo
 

Destaque (20)

Oracle xmldb
Oracle xmldbOracle xmldb
Oracle xmldb
 
Grupo1
Grupo1Grupo1
Grupo1
 
Xml
XmlXml
Xml
 
Java and XML
Java and XMLJava and XML
Java and XML
 
Xml Java
Xml JavaXml Java
Xml Java
 
Tema 3 xml processing ap is
Tema 3   xml processing ap isTema 3   xml processing ap is
Tema 3 xml processing ap is
 
XML y JAVA
XML y JAVAXML y JAVA
XML y JAVA
 
Flashage Kbox
Flashage KboxFlashage Kbox
Flashage Kbox
 
La reproducción
La reproducciónLa reproducción
La reproducción
 
Actualités Information Jeunesse Val-d'Oise
Actualités Information Jeunesse Val-d'OiseActualités Information Jeunesse Val-d'Oise
Actualités Information Jeunesse Val-d'Oise
 
Uniques labs l'accompagnement
Uniques labs l'accompagnement Uniques labs l'accompagnement
Uniques labs l'accompagnement
 
Fleurs, arbres et plantes
Fleurs, arbres et plantesFleurs, arbres et plantes
Fleurs, arbres et plantes
 
Recrutement oma v3
Recrutement oma v3Recrutement oma v3
Recrutement oma v3
 
Plan de relance 2
Plan de relance 2Plan de relance 2
Plan de relance 2
 
Pour l'être aimer By Shany
Pour l'être aimer By ShanyPour l'être aimer By Shany
Pour l'être aimer By Shany
 
La veille de Red Guy du 24.05.12 : DIY (Do it yourself)
La veille de Red Guy du 24.05.12 : DIY (Do it yourself)La veille de Red Guy du 24.05.12 : DIY (Do it yourself)
La veille de Red Guy du 24.05.12 : DIY (Do it yourself)
 
Tecnología de la información y la comunicación
Tecnología de la información y la comunicaciónTecnología de la información y la comunicación
Tecnología de la información y la comunicación
 
Números Romanos
Números RomanosNúmeros Romanos
Números Romanos
 
Circulacioncoronaria dra betina
Circulacioncoronaria dra betinaCirculacioncoronaria dra betina
Circulacioncoronaria dra betina
 
Quotient Marketing DAT
Quotient Marketing DATQuotient Marketing DAT
Quotient Marketing DAT
 

Semelhante a Integración de aplicaciones Java

Semelhante a Integración de aplicaciones Java (20)

02 - Servicios SOAP.pptx
02 - Servicios SOAP.pptx02 - Servicios SOAP.pptx
02 - Servicios SOAP.pptx
 
Java WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsJava WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRs
 
Servicios web java php-perl-google
Servicios web java php-perl-googleServicios web java php-perl-google
Servicios web java php-perl-google
 
Java Web Services - Introduccion
Java Web Services - IntroduccionJava Web Services - Introduccion
Java Web Services - Introduccion
 
Ruby y las arquitecturas orientadas a servicios
Ruby y las arquitecturas orientadas a servicios Ruby y las arquitecturas orientadas a servicios
Ruby y las arquitecturas orientadas a servicios
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
SOAP y Web Services
SOAP y Web ServicesSOAP y Web Services
SOAP y Web Services
 
Servicios Web II.ppt
Servicios Web II.pptServicios Web II.ppt
Servicios Web II.ppt
 
Servicios web Extendido_error perl
Servicios web Extendido_error perlServicios web Extendido_error perl
Servicios web Extendido_error perl
 
JDBC(conjunto de clases e interfaces)
JDBC(conjunto de clases e interfaces)JDBC(conjunto de clases e interfaces)
JDBC(conjunto de clases e interfaces)
 
Html5, css3, java script
Html5, css3, java scriptHtml5, css3, java script
Html5, css3, java script
 
Trabajar con bases de datos desde ASP.NET
Trabajar con bases de datos desde ASP.NETTrabajar con bases de datos desde ASP.NET
Trabajar con bases de datos desde ASP.NET
 
Jdbc
JdbcJdbc
Jdbc
 
Webservices
WebservicesWebservices
Webservices
 
Jdbc
JdbcJdbc
Jdbc
 
Conceptos Introductorios Del Web 2
Conceptos Introductorios Del Web 2Conceptos Introductorios Del Web 2
Conceptos Introductorios Del Web 2
 
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.pptintroduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
 
Conceptos acerca de Ajax
Conceptos acerca  de AjaxConceptos acerca  de Ajax
Conceptos acerca de Ajax
 
Introduccion Ajax V1.0
Introduccion Ajax V1.0Introduccion Ajax V1.0
Introduccion Ajax V1.0
 
JDBC
JDBCJDBC
JDBC
 

Mais de Iker Canarias

Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de softwareIker Canarias
 
Subversion - buenas prácticas
Subversion - buenas prácticasSubversion - buenas prácticas
Subversion - buenas prácticasIker Canarias
 
Breve introducción a Apache Ant
Breve introducción a Apache AntBreve introducción a Apache Ant
Breve introducción a Apache AntIker Canarias
 
Introducción a JUnit
Introducción a JUnitIntroducción a JUnit
Introducción a JUnitIker Canarias
 
Persistencia de datos en Java
Persistencia de datos en JavaPersistencia de datos en Java
Persistencia de datos en JavaIker Canarias
 
Introducción a JBoss
Introducción a JBossIntroducción a JBoss
Introducción a JBossIker Canarias
 
Buenas prácticas para la construcción de software
Buenas prácticas para la construcción de softwareBuenas prácticas para la construcción de software
Buenas prácticas para la construcción de softwareIker Canarias
 
Introducción a Servidor HTTP Apache
Introducción a Servidor HTTP ApacheIntroducción a Servidor HTTP Apache
Introducción a Servidor HTTP ApacheIker Canarias
 

Mais de Iker Canarias (10)

Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
Subversion - buenas prácticas
Subversion - buenas prácticasSubversion - buenas prácticas
Subversion - buenas prácticas
 
Breve introducción a Apache Ant
Breve introducción a Apache AntBreve introducción a Apache Ant
Breve introducción a Apache Ant
 
Introducción a JUnit
Introducción a JUnitIntroducción a JUnit
Introducción a JUnit
 
Frameworks J2EE
Frameworks J2EEFrameworks J2EE
Frameworks J2EE
 
Persistencia de datos en Java
Persistencia de datos en JavaPersistencia de datos en Java
Persistencia de datos en Java
 
Introducción a JEE
Introducción a JEEIntroducción a JEE
Introducción a JEE
 
Introducción a JBoss
Introducción a JBossIntroducción a JBoss
Introducción a JBoss
 
Buenas prácticas para la construcción de software
Buenas prácticas para la construcción de softwareBuenas prácticas para la construcción de software
Buenas prácticas para la construcción de software
 
Introducción a Servidor HTTP Apache
Introducción a Servidor HTTP ApacheIntroducción a Servidor HTTP Apache
Introducción a Servidor HTTP Apache
 

Integración de aplicaciones Java

  • 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
  • 3. XML
  • 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.
  • 13. WSDL
  • 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();
  • 29. JAXM Creando un mensaje MessageFactory 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");
  • 30. JAXM Creando un mensaje con DOM MessageFactory 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);
  • 31. JAXM Enviando mensaje SOAPMessage response = soapConnection.call(message, endpoint); //Usando un Messaging Provider providerConnection.send(message);
  • 33. JAXM JAXM + Otros elementos B2B
  • 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.
  • 66. JMS
  • 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)
  • 71. Integración de aplicaciones Java FIN Iker Canarias iker.canarias@gmail.com