• No se han encontrado resultados

Visión de Web Services con J2EE

N/A
N/A
Protected

Academic year: 2021

Share "Visión de Web Services con J2EE"

Copied!
43
0
0

Texto completo

(1)

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

(2)

• 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

(3)

• 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

(4)

Comenzamos

• Introducción a Web Services

• Desarrollo de Web Services en Java

• Web Services y Seguridad

• Integración e Interoperabilidad J2EE usando Web Services

(5)

• 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

(6)

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

(7)

• 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) Enrutamiento Seguridad Contenido

(8)

• Protocolo SOAP

POST /axis/services/MessageService HTTP/1.0 Content-Type: text/xml; charset=utf-8

Accept: application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/1.2RC1 Host: localhost:5050 Cache-Control: no-cache Pragma: no-cache SOAPAction: "" 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>

(9)

• 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>

(10)

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

(11)

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

(12)

• 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>

(13)

• 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>

(14)

• 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>

(15)

• 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 Esquema ComplexType

(16)

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

(17)

• 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

(18)

• Arquitectura de Web Services en J2EE: JAXRPC Cliente JAXRPC Código Generado Runtime JAXRPC (Stub) SOAP HTTP Documento WSDL Contenedor Runtime JAXRPC (Tie) Puerto Servicio JAXRPC Java < WSDL wscompile wsdeploy WSDL > Java

(19)

• 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; }

(20)

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 operaciones

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

(21)

Desarrollo de Web Services en Java

(22)

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

(23)

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

(24)

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)

(25)

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

(26)

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

(27)

Web Services y Seguridad

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

Estabilidad

(28)

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)

(29)

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

(30)

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 Msg Firmado = SpK1(M),PK1 Server(Tomcat)

Msg Encriptado = EPK2(M)

JKS contiene:

a)pK1 y PK1 de cliente b)PK2 de server

Hash de msg a partir de pK1 y envío de PK1 (para verific por parte de server)

Encripción de msgusando PK2 JKS contiene: a)pK2 y PK2 de server b)PK1 de cliente Desencripción usando pK2 p = Llave privada P = Llave pública

(31)

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

(32)

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

(33)

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

(34)

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

(35)

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

(36)

Web Services Sector Financiero

Mainframe Msg App App WS WSS Orq WF J2EE Web App Consumidores Sincronización BD IDs LDAP Identidad

Rep2 Rep3 Rep4

Rep1

(37)

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

(38)

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

(39)

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

(40)

Trayectoria Web Services

(41)

Trayectoria Web Services

• Colaboración de negocio: ebXML

Web Services + ebXML

Tipo Request/Response Colaboración

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

Descr. Servicio WSDL CPP, CPA (WSDL

dentro de CPP/CPA)

Protocolo SOAP, XML ebXML Message Service

sobre SOAP, XML o BPSS

Estándar de Ninguno EDIFACT, OAGI, BODs,

contenido UBL, etc

(42)

Trayectoria Web Services

• Rendimiento: Fast Web Service

Protocolo vs. Tiempo 20 elementos

(43)

Referencias

Documento similar

Combined with traditional types of geospatial web services (e.g., Web Map Services, Web Feature Services), Sensor Web Enablement and Web Processing Service specifications are

Given a set of service de- scriptions, already classified under some classification taxonomy, and a new service description, we propose a heuristic for automated

In a context different from robotics, the DiVA Project 3 proposes to lever- age models both at design-time and runtime (models@runtime) to support the dynamic adaptation of

Es por ello que, partiendo de un estudio de las tendencias actuales y tomando la experiencia de la implementación del módulo de Servicio Autónomo del Sistema Servicio Autónomo

a) El orden de los elementos en el soap: Body de un envelope debe equivaler al del wsdl: part en el wsdl:.. b) Una descripción puede usar el atributo parameterOrder de un elemento

Runtime structure behaviour: task handling..

Yet, our analysis reveals a third-party tracking ecosystem semi- decoupled from the regular web in which various analytics and advertis- ing services track users across and

L’aplicació creada actua de servidor respecte a la part inferior (5). Podem observar els serveis webs oferts per l’aplicació final i els protocols concrets en que es serveix