43
3er Congreso Interamericano de Administración Universitaria Visión de Web Services con J2EE Héctor Jiménez Arquitectura e Integración de aplicaciones Dirección de Tecnología QoS Labs

Vision Web Services J2EE

Embed Size (px)

Citation preview

Page 1: Vision Web Services J2EE

3er Congreso Interamericano de Administración Universitaria

Visión de Web Services con J2EE

Héctor JiménezArquitectura e Integración de aplicacionesDirección de Tecnología QoS Labs

Page 2: Vision Web Services J2EE

• Introducción a Web Services• Web Services: que son, estándares e implementaciones

• Desarrollo de Web Services en Java • Arquitectura de Web Services en J2EE – JAX-RPC

• Ejemplos de implementación de servicio con JAXRPC

• Modelos de programación para clientes de Web Services

• Web Services y Seguridad• Estándares e implementaciones en J2EE

• Ejemplos

Agenda

Page 3: Vision Web Services J2EE

• Integración e Interoperabilidad J2EE usando Web Services• Procesos de negocio en Web Services (BPEL)

• WS-I

• Consideraciones generales

• Ejemplo de Web Services en Sector Financiero

• Trayectoria de Web Services• Adopción de tecnología de Web Services actual: simple, EAI y B2B

• Colaboración en negocio: ebXML, EDI, RosettaNet, BizTalk

Agenda

Page 4: Vision Web Services J2EE

Comenzamos

• Introducción a Web Services• Desarrollo de Web Services en Java • Web Services y Seguridad• Integración e Interoperabilidad J2EE usando Web Services• Trayectoria de Web Services

Page 5: Vision Web Services J2EE

• Qué es un Web Service:Infraestructura independiente de lenguaje y plataforma para comunicación

aplicación – aplicación desacoplada e interoperable sobre una Internet

• Independiente de lenguaje y plataforma: Separación de la especificación y la implementación

• Desacoplada: Basa en mensajes con interacción síncrona y asíncrona

• Sobre una Internet: No existe control centralizado, se usan protocolos bien establecidos y consideraciones de seguridad

• Interoperable: Basado en estándares

• Aplicación – Aplicación: Internet tradicional es Aplicación – Humano (SMTP, FTP, HTTP); esquemas RPC (procedural), ORB y COM (objetos), MOM (mensajes – jms/mq) para aplicación – aplicación dentro de una Internet sin considerar interoperar con otros sistemas

Introducción a Web Services

Page 6: Vision Web Services J2EE

• Comunicación entre Aplicaciones en Web Services• Protocolo de Transporte:

• HTTP/HTTPS

• Codificación de datos

• Protocolo SOAP (Simple Object Access Protocol) y Esquema XML (DTD/XSD)

• Descripción de interfaces o puntos de acceso a aplicación

• WSDL (Web Services Description Language)

• Descripción de servicio y descubrimiento

• UDDI (Universal Description, Discovery and Integration)

• Seguridad

• WS-Security, XML Signature y XML Encription (Especificaciones JSR)

Introducción a Web Services

Page 7: Vision Web Services J2EE

• Protocolo SOAP• Protocolo basado en XML para intercambio de información

Introducción a Web Services

Mensaje SOAP

Attachment

Attachment

...

Parte principal(text/xml) Encabezado

(Header)

“Sobre” SOAP(Envelope)

Cuerpo(Body)

EnrutamientoSeguridad

Contenido

Page 8: Vision Web Services J2EE

• Protocolo SOAP POST /axis/services/MessageService HTTP/1.0

Content-Type: text/xml; charset=utf-8Accept: application/soap+xml, application/dime, multipart/related, text/*User-Agent: Axis/1.2RC1Host: localhost:5050Cache-Control: no-cachePragma: no-cacheSOAPAction: ""Content-Length: 409

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body>

<ns1:e1 xmlns:ns1="urn:foo">Hola</ns1:e1><ns2:e1 xmlns:ns2="urn:foo">Mundo</ns2:e1><ns3:e3 xmlns:ns3="urn:foo">Datos adicionales</ns3:e3>

</soapenv:Body></soapenv:Envelope>

Introducción a Web Services

Page 9: Vision Web Services J2EE

• Definición de Web Services: WSDL• Propuesta de IBM y Microsoft

Define el servicio llamado ServicioSumaNumeros y los nombres de espacio para el documento XML (targetNamespace)

Define 2 mensajes: Solicitud y Respuesta c/u con 1 parámetro (part) de tipo String que está definido según el estándar de XML Schema con el namespace xsd referenciado en <definitions>

Define una operación llamada suma que se compone de un mensaje de entrada (param) y otro de salida (valor) identificado con el namespace xsd1. Los patrones de operaciones son: input, input y output, output e input y output (notificación) que pueden incluir un fault

Especifica cómo el puerto se va a transmitir (HTTP GET, HTTP POST o SOAP) y el estilo o formado el mensaje: RPC o Document.

Especifica la ubicación del servicio y una descripción

Introducción a Web Services

<definitions>

<message>

<portType>

<binding>

<service>

Page 10: Vision Web Services J2EE

• Ejemplo de definición de servicio en WSDL: Servicio de Suma de Números

Introducción a Web Services

Page 11: Vision Web Services J2EE

• Formas de serialización de datos• Se usan definiciones de XML Schema (Literal) para determinar cómo codificar los datos

• Se usa reglas de codificación de SOAP (Encoding)

• Resultado de 4 combinaciones: Document/Literal, RPC/Encoding, Document/Encoding, RPC/Literal

• SOAP Document/Literal encoding más aceptado y usado, recomendado por Web Services Interop (WS-I) Basic Profile.

• Usar RPC cuando: dentro de misma empresa (ambiente confiado), se requiere confiabilidad, se tiene suficiente ancho de banda, proceso de negocio corto, comunicación síncrona y punto a punto (en vez de “end-to-end”).

Introducción a Web Services

Page 12: Vision Web Services J2EE

• Formas de interpretación de documentos SOAP• RPC (Remote Procedure Call): cada atributo part del WSDL de la operación indica un parámetro o un valor de respuesta que se encuentra dentro del cuerpo del mensaje de SOAP

<binding name="SumaNumerosBinding" type="tns:SumaNumerosPort"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="Suma"> <input> <soap:body use="encoded" namespace=http://www.qoslabs.com” encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output> <soap:body use="encoded" namespace=http://www.qoslabs.com” encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> <fault name="error"> <soap:fault name="error" use="literal"/> </fault> </operation></binding>

Introducción a Web Services

Page 13: Vision Web Services J2EE

• Formas de interpretación de documentos SOAP• Document: El mensaje es directamente el body de SOAP

<binding name="SumaNumerosBinding" type="tns:SumaNumerosPort"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="Suma"> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> <fault name="error"> <soap:fault name="error" use="literal"/> </fault> </operation></binding>

Introducción a Web Services

Page 14: Vision Web Services J2EE

• Esquemas XML• Sistema o lenguaje de definición de tipos de datos para XML. Tradicionalmente definido en DTD / XML Infoset (abstracto), evolución a espacios de nombres (Namespaces) con XML 1.0

<?xml version="1.0" encoding="UTF-16" ?><ns:estudiante xmlns:ns="xyzzy:abc">

<nombre>David</nombre><edad>21</edad>

</ns:estudiante>

• XML Schema Definition Languaje (XSD) permite asociar tipos de datos con elementos y atributos

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="xyzzy:abc" targetNamespace="xyzzy:abc"> <xsd:complexType name="persona" > <xsd:sequence><xsd:element name="nombre" type="xsd:string"/> <xsd:element name="edad" type="xsd:double" /> </xsd:sequence> </xsd:complexType><xsd:element name="estudiante" type="tns:persona" /></xsd:schema>

Introducción a Web Services

Page 15: Vision Web Services J2EE

• Esquemas XML• Mapeo entre un esquema XML y la programación del sistema no es fácil• Estructuras de datos no soportadas en esquema XML (arreglos, referencias, etc)

Introducción a Web Services

Clase Java

Sistema

Cuerpo(Body)

Clase Java EsquemaComplexType

ComplexType

Page 16: Vision Web Services J2EE

Donde vamos?

• Introducción a Web Services• Desarrollo de Web Services en Java • Web Services y Seguridad• Integración e Interoperabilidad J2EE usando Web Services• Trayectoria de Web Services

Page 17: Vision Web Services J2EE

• Arquitectura de Web Services en J2EE: JAXRPC• Basada en JAXRPC 1.1 (Java API for XML-Based RPC) y JSR 101. Especificación para la construcción de aplicaciones y servicios Web que incorpora funcionalidad RPC basada en XML de acuerdo al estándar SOAP 1.1. Versión 2.0 de especificación JAXRPC en proceso de revisión por Java Community Process (Junio 2004)

• Conjunto de puertos que operan sobre mensajes, los puertos operan dentro de un contenedor J2EE. Implementación JAX-RPC 1.1 especifica uso de Servlet para acceso a puerto de servicio, JSR 109 emplea EJB 2.1.

• Implementación incluída en JWSDP 1.4 (Java Web Services Developer Pack)

• Herramientas:

• WSDL desde/hacia Java

• Serialización de tipos de Java desde/hacia XML

• Empaquetamiento para aplicaciones web J2EE

• Modelos de programación de clientes

Desarrollo de Web Services en Java

Page 18: Vision Web Services J2EE

• Arquitectura de Web Services en J2EE: JAXRPC

ClienteJAXRPC

Código Generado

Runtime JAXRPC(Stub)

SOAP

HTTP

Documento WSDL

Contenedor

Runtime JAXRPC(Tie)

Puerto Servicio JAXRPC

Java < WSDL

wscompilewsdeploy

WSDL > Java

Desarrollo de Web Services en Java

Page 19: Vision Web Services J2EE

• Mapeo WSDL < > Java en JAXRPC <portType name="Servicio">

<operation name="Operacion"> <input message="tns:Consulta"/> <output message="tns:Respuesta"/> </operation>

</portType>

portType = Interfaz Abstracta en Java operation = Metodo de clase message = parámetros y valores de regreso según codificación

public interface Servicio extends java.rmi.Remote { public String Operacion(String param) throws java.rmi.RemoteException;

}

Desarrollo de Web Services en Java

Page 20: Vision Web Services J2EE

Desarrollo de Web Services en Java

• A partir de definición WSDL ó a partir de clases java• Uso de herramientas (IDE, Ant)• Pasos generales para generación de Web Service

• wsdl2java – Generación de clases de tipos y operacioneswscompile.sh -import -d ./classes -keep -s ./src -f:serializeinterfaces,wsi -verbose -model ./ServicioSumaNumeros_model.xml.gz ./config.xml

•Modificar código generado (implementación de lógica de web service) - recompilar•Generar clases de servicio

wscompile.sh -gen:server -classpath ./classes -d ./classes -keep -s ./src -verbose config.xml

•Crear estructura de aplicación web (WAR)•Instalación de aplicación web en servlet container

Page 21: Vision Web Services J2EE

Desarrollo de Web Services en Java

• Ejemplo de implementación de servicio (Suma Numeros)

Page 22: Vision Web Services J2EE

Desarrollo de Web Services en Java

• Modelos de programación para clientes de Web Services• Stub

• Se genera(n) clase(s) al compilar y están ligadas a transporte del XML (HTTP o SOAP)• Se implementa javax.xml.rpc.Stub• Se utilizan clases particulares de API de implementación (JAXRPC, AXIS)• Mejor rendimiento, método menos dinámico

• Ejemplo de cliente Stub

Page 23: Vision Web Services J2EE

Desarrollo de Web Services en Java

• Modelos de programación para clientes de Web Services• Dynamic Proxy: Interfaz WSDL creada al momento de compilación pero la implementación de proxy en cliente se hace en “runtime”

• Se genera “al vuelo” durante ejecución de cliente, no al compilar• El servicio proporciona la definición (WSDL) que el proxy acuerda durante ejecución• Más fácil de programar pero mas lento que Stub

• Ejemplo de cliente Proxy

Page 24: Vision Web Services J2EE

Desarrollo de Web Services en Java

• Modelos de programación para clientes de Web Services• Dynamic Invocation Interface (DII): Tanto el WSDL como la implementación misma del cliente se hace en “runtime”

• Control completo al programador del cliente• Método más dinámico pero mayor complejidad en programación • Cliente encuentra servicio e invoca vía Broker• Usar cuando no se conoce la definición hasta ejecución (no al compilar)

• Ejemplo de cliente DII

Page 25: Vision Web Services J2EE

Donde vamos?

• Introducción a Web Services• Desarrollo de Web Services en Java • Web Services y Seguridad• Integración e Interoperabilidad J2EE usando Web Services• Trayectoria de Web Services

Page 26: Vision Web Services J2EE

Web Services y Seguridad

• Seguridad en Web Services: Panorama general de estándares• W3C (World Wide Web Consortium)

• XML Encription, XML Signature, SOAP• IETF (Internet Engineering Task Force)

• SSL, TLS, HTTP sobre SSL/TLS, HTTPS• OASIS (Organization for the Advancement of Structured Information Standards)

• Web Services Security (WSS), SOAP message level security, SAML

Page 27: Vision Web Services J2EE

Web Services y Seguridad

• Seguridad en Web Services: Panorama general de estándares

Estabilidad

Draft Inicial Draft Maduro V1 Completa

Page 28: Vision Web Services J2EE

Web Services y Seguridad

• Seguridad en Web Services: Implementación en J2EE• JAXRPC utiliza XWS-Security APIs para seguridad en Web Services bajo los siguientes estándares:

• XML-DSig (Apache/W3C) para firmas digitales• XML-Enc (Apache/W3C) para encripción de mensajes• Tokens de usuario y certificados X.509 para autenticación basados en OASIS WSS Username Token Profile 1.0 y OASIS WSS X509 Certificate Token Profile 1.0

• JSR 105 es estándar para firmas digitales y JSR 106 es estándar para encripción, no usados por JAXRPC (versiones futuras)• Base de datos certificados basada en JKS (Java Key Store)

Page 29: Vision Web Services J2EE

Web Services y Seguridad

• Capas de seguridad• Nivel Transporte: Autentificación básica, autentificación por certificado sobre SSL/TLS. Codificación de usuario/contraseña en stub de cliente, puerto de servicio en HTTPS con J2EE security constraints.• Nivel Mensaje: Información de seguridad dentro de mensaje SOAP (encabezado) por ejemplo: la firma de contenido, certificado x.509 de remitente. Problemas con administración de infraestructura PKI en B2B• Formatos de mensaje en desarrollo por OASIS por lo cual es EA en XWS-Security de JWSDP• JAXRPC utiliza Handlers: puntos de intercepción en el procesamiento del mensaje entre cliente y servicio

Page 30: Vision Web Services J2EE

Web Services y Seguridad

• Ejemplo de implementación de WSS (Pago Electronico):• Encripción de mensajes SOAP

• Autentificación vía certificados X.509

Cliente Server(Tomcat)Msg Firmado = SpK1(M),PK1

Msg Encriptado = EPK2(M)

JKS contiene:a)pK1 y PK1 de clienteb)PK2 de server

Hash de msg a partir de pK1y envío de PK1 (para verificpor parte de server)

Encripción de msgusando PK2

JKS contiene:a)pK2 y PK2 de serverb)PK1 de cliente

Desencripción usando pK2

p = Llave privadaP = Llave pública

Page 31: Vision Web Services J2EE

Donde vamos?

• Introducción a Web Services• Desarrollo de Web Services en Java • Web Services y Seguridad• Integración e Interoperabilidad J2EE usando Web Services• Trayectoria de Web Services

Page 32: Vision Web Services J2EE

Integración e Interoperabilidad

• Procesos de negocio con Web Services• Especificación de Business Process Execution Languaje (BPEL) for Web Services 1.1 por IBM• BPEL es un lenguaje en XML para describir el comportamiento de un proceso de negocio basado en Web Services• Acceso a ciertos procesos de negocio para otras empresas de manera estándar: proveedores, distribuidores, cadena de aprovisionamiento• Ejemplo de implementación ActiveBPEL

Page 33: Vision Web Services J2EE

Integración e Interoperabilidad

• WS-I• Esfuerzo para proveer interoperabilidad para Web Services entre aplicaciones, lenguajes de programación y plataformas: Microsoft, IBM, Sun• No genera especificaciones o estándares, más bien genera perfiles, marcos de referencias para pruebas de interoperabilidad (conformance)• J2EE 1.4 provee compatibilidad para Web Services según WS-I para: WSDL, SOAP y WSS. Implementado en JWSDP• Provee escenarios de compatibilidad, herramientas para el análisis de configuraciones (WSDl/UDDI) así como para monitoreo de mensajes

Page 34: Vision Web Services J2EE

Integración e Interoperabilidad

• Consideraciones generales de integración para Web Services• Abuso de Web Services en sistemas (sobrecarga adicional)• Limitaciones en el uso de tipos de estructuras de datos cuando se utilizan diferentes implementaciones (.NET, Java)• Implementaciones de estándares de Web Services carecen de WSS• Federación de identidad no madura entre implementaciones, requiere de infraestructura de identidad• Mecanismo adecuado para Service Oriented Architectures (SOA), principalmente como enlace entre los procesos de negocio de empresas

Page 35: Vision Web Services J2EE

Web Services Sector Financiero

• Web Service para Sector Financiero• Arquitectura SOA • Estandarización de estructura de transacciones: IFX• Seguridad en transacciones• Crecimiento hacia exterior/interior con procesos de negocio• Ejemplos de implementación

Page 36: Vision Web Services J2EE

Web Services Sector Financiero

Mainframe Msg

App

App WS

WSS

Orq

WF

J2EE WebApp Consumidores

Sincronización

BD IDs LDAP

Identidad

Rep2 Rep3 Rep4Rep1

Auditoría

Page 37: Vision Web Services J2EE

Donde vamos?

• Introducción a Web Services• Desarrollo de Web Services en Java • Web Services y Seguridad• Integración e Interoperabilidad J2EE usando Web Services• Trayectoria de Web Services

Page 38: Vision Web Services J2EE

Trayectoria Web Services

• Adopción de tecnología de Web Services actual• Actualmente se implementan (México) muy pocos Web Services y son simples, orientados a consumidores, sin estado• Principalmente en EUA se ha iniciado la implementación de Web Services estilo EAI (Enterprise Application Integration), con frontera la misma organización• A corto plazo: B2B, implementando Web Services para extranet con el fin de habilitar integración con los procesos de negocio de la empresa hacia socios, clientes y otros

Page 39: Vision Web Services J2EE

Trayectoria Web Services

• Colaboración de negocio: ebXML, EDI, RosettaNet y BizTalk• Limitantes en WSDL, SOAP y UDDI: no resuelven colaboración de negocio, no hay repositorio de objetos de negocio• EDI muy “pesado”, requiere de VPN y “personalización” para cada negocio• RosettaNet provee definiciones muy rígidas y no ofrece descubrimiento• BizTalk es propietario, una sola plataforma y no existe concepto de colaboración de negocio o perfil de socios• ebXML: crear una comunidad de comercio electrónica donde empresas de cualquier tamaño puedan localizarse y llevar a cabo negocio a través del intercambio de mensajes XML• Especificaciones para Procesos de negocio, modelo de registro y servicios, mensajería y colaboración entre socios• JAXR provee API para registros basados en ebXML

Page 40: Vision Web Services J2EE

Trayectoria Web Services

• Colaboración de negocio: ebXML

Page 41: Vision Web Services J2EE

Trayectoria Web Services

• Colaboración de negocio: ebXML

Web Services + ebXMLTipo Request/Response Colaboración

Comunicación RPC/Document Síncrona/Asíncrona

Descr. Servicio WSDL CPP, CPA (WSDLdentro de CPP/CPA)

Protocolo SOAP, XML ebXML Message Service sobre SOAP, XML o BPSS

Estándar de Ninguno EDIFACT, OAGI, BODs, contenido UBL, etc

Localización UDDI Registry ebXML Registry

Page 42: Vision Web Services J2EE

Trayectoria Web Services

• Rendimiento: Fast Web Service

Protocolo vs. Tiempo 20 elementos

Page 43: Vision Web Services J2EE

Preguntas