EJB WebService Caio Nakashima [email protected] [email protected] 1 Evolução da Computação em Rede Waves of Network Computing Embedded Computers 1011 Cars TVs Computers 108 Things - 1014 Thermostats Switches Packages Phones Clothes Games Desktops Clients Functions Protocols Organization Transfers Transactions IP v4 Content IP Layer Telemetry Control IP v6 Waves of Network Computing Things - 1014 Embedded Computers 1011 Thermostats Switches Cars TVs Computers 108 Phone s Desktops Packages Clothes Games Clients Functions Transfers Transactions IP v4 Protocols Content IP v6 IP Layer FT SMTP RMI/IIOP X RPC/XDR Telnet P Identity LDAP SOAP Organization HTTP Jini Client/Server UDDI N-tier Control Telemetry JXTA Web Applications Web Services Polyarchical Fractal O novo software Payment Developer X1 Locater X106 New Service X106 Calendar Authentication Software Software como serviço User’s Device Evolução da Computação Distribuída Evolução da Plataforma Catch Phrase The Network Is the Computer Scale 100s 1,000s When/Peak 1984/1987 1990/1993 1996/1999 2001/2003 1998/2004 2004/2009 Leaf Protocol(s) X X +HTTP (+JVM) +XML Portal +RM Unknown Directory(s) NS, NS+ +CDS +LDAP(*) +UDDI +Jini +? Session RPC, XDR +CORBA +CORBA, RM +SOAP, XML +RM/Jini +? Schematic Objects The Computer Network of Legacy to Is the Embedded the Web Network Things 1,000,000s 10,000,000s 100,000,000s Network of Things 100,000,000 s Padrões de comunicação ClientServer Web Web 3-Tier Application Services Hybrid P2P Fractal Communication Patterns: Java 2 Business Systems DB Server App Server J2EE Web Server Browser Client J2SE/ J2ME Web Application Padrão de comunicação: Sun ONE Bus. Sys. DB App XML (UDDI, SOAP) J2EE Web Browser J2SE/ J2ME Context and Identity (LDAP, Policy, Liberty) Web Service Conceito • A ideia atrás de Serviços Web é expor uma aplicação como um serviço para clientes na Web, independentemente da aplicação do cliente e seu ambiente de execução. • A interoperabilidade é o mais importante característica de um Serviço Web e todos os provedores de tecnologias disponíveis, incluindo Microsoft, estão aderentes aos padrões. • Por exemplo, um cliente C# sendo executado em .NET pode chamar um serviço implementado em Java EJB em um contêiner J2EE. • A interoperabilidade significa que estes serviços são fracamente acoplados que EJB. Padronização • Existem duas organizações que trabalham na padronização de Serviços Web. – World Wide Web Consortium (W3C) – Organization for the Advancement of Structured Information Standards (OASIS) • Eles trabalham na padronização: • SOAP e WSDL – W3C • UDDI - OASIS Web Services / W3C Um WebService é uma aplicação de software Identificado por uma URI, cuja interface e atribuição são definidas, descritas e descobertas através de artefatos XML e suporta interação direta com outras aplicações de software utilizando mensagens XML via protocolos internet Evolução da Computação Distribuída Servers Clients Servers Internet PDA Cliente Servidor Cell Phone Clients Web-based computing Workstation Kiosk Server Laptop Web Services/Peer-toPeer Cliente/Serivdor x. Web Services Web Service Cliente / Servidor Dentro da Empresa Dependente de um conjunto de linguagem Procedural Geralmente limitado por um protocolo de transporte Fortemente Acoplado Processamento Eficiente (tempo / espaço) Entre Empresas Independente de Linguagem de Programação Baseado em Mensagem Facilmente adaptado em diferentes protocolos de transporte Fracamente Acoplado Processamento não eficiente Ajuda • Fracamente acoplados – permitem que máquinas e usuários de um sistema distribuído sejam fundamentalmente independentes e ainda interagir de forma limitada quando isto for necessário, compartilhando discos, impressoras e outros recursos. • Fortemente acoplados – provê um nível de integração e compartilhamento de recursos mais intenso e transparente ao usuário caracterizando sistemas operacionais distribuídos. Fonte:http://pt.wikipedia.org/wiki/Computação_distribuída Aplicação Web x Web Services Web Service Aplicação Web Interação Usuário Programa Componentes de Integração Estática Serviço Monolítico InteraçãoProgramaPrograma Possibilidade de integração de componentes (no futuro) Possibilidade de agregação de serviço (no futuro) Web Services Service Grid Registro do Serviço Descoberta do Serviço Registro Chamada do Serviço Entrega de Serviço Montagem do Serviço Macro Serviço Micro Serviço Business Process Management Micro Serviço Micro Serviço Agregação do Serviço Nasdaq Entrada: Codigo Saída: Preço Portal de Serviço de Ações Usuário Agência Notícias 1 Entrada: Codigo Saída: Notícias Entrada: Codigo Saída: Preço, Notícia, Comércio Agência Notícias n Entrada: Codigo Saída: Notícias Corretor 1 Corretor n Entrada: Codigo, Preço, Qtde Entrada: Codigo, Preço, Qtde Web Services? Plataforma Neutra É acessível de forma padrão Acessível de forma interoperacional Uso simplificado e ubíquo “Barato” – não caro Integração simplificada Web Services? Interoperável – conecta em redes heterogêneas utilizando padrão baseado na web ubíquo. Econômico – recicla componentes, não requer instalação e forte integração de software. Automático – Não requer interação humana para transação complexa. Acessível – Sistemas legados e aplicações internas podem ser expostas e acessíveis via Web. Disponibilidade – Serviço em qualquer dispositivo, em qualquer lugar e quando desejar. Escalável – Sem limite para o escopo e heterogeniedade das aplicações. Web Services Exemplo de uso Distribuidor XML XML Fornecedor Internet Fábrica XML XML Logistica “Crescimento baseado em uma infraestrutura leve e padronizada para troca de informações em aplicações de negócio” Impacto do Web Services nas aplicações “Des integração da aplicação” Web Services Programa Monolítico Serviço Apl Serviço Apl Serviço Apl Serviço Sistema Serviço Sistema Serviço Sistema Applicação Programa Computador Internet/Intranet/Extranet Macro web services – Sistemas Virtuais • Um web service é acessível através de aplicações ou outros serviços. Web Services Balanço Finanças Fluxo de Caixa Portfolio Informação Estoque “Portfolio” pode ser uma aplicação, um portal ou um webservice Contas CNN Notícias UOL Micro web services – Sistemas Virtuais • Um web service é acessível através de aplicações ou outros serviços. Web Services Bank balance Ortografia Gramática Sinônimos Editor de Texto Mídia “Editor de Texto” pode ser aplicação, uma funcionalidade ou um web service Dicionário c:\... Publicação http://... Três leis da computação Lei de Moore Lei de Gilder O poder da computação dobra cada 18 meses. A largura de banda dobra a cada 12 meses. Lei de Metcalfe (Efeito da Rede) O valor da rede cresce exponencialmente a medida que cresce o número de usuários Impacto da Integração Gatilho do efeito da rede Integração customizada Web Services Lei de Metcalfe: O valor da rede é proporcional ao quadrado do número de participantes. Mitos: Web Services novo Conceito Web services é uma computação distribuída Distributed Computing ala CORBA / Concept Java Interface Description CORBA IDL, Java interface RPC support ORBs, Idl2java compilers, rmic Service Registry CORBA naming service, JNDI Messaging support CORBA Event/Notification service, JMS Transaction support CORBA Transaction service, JTS Secuity support CORBA Security service, Java security Basic Web Services WSDL SOAP, compilers for WSDL UDDI ? ? ? Mitos: Web Services novo Conceito Webservice requer somente: Webservice é baseado no paradigma RPC SOAP, WSDL, UDDI Necessita de uma semântica de alto nível Modelo de comunicação baseado em documentos será mais popular. Webservices deve ser baseado em HTTP: Outros protocolos de transporte podem ser utilizados. Web Services O que falta além dos serviços: SOAP, WSDL, UDDI Deficiências: Qualidade de serviço Gerenciamento Segurança Transação Contexto de usuário Gerenciamento de Identidade Workflow Web Services - Receita 1a fase 2a fase (1 a 2 anos) Implantar uma aplicação internamente da organização procurando interoperabilidade. SOAP sobre HTTP/S Implantação com um parceiro confiável. Registro privado. 3a fase (pelo menos 3 a 4 anos) Implantar para todos. Registro público. Web Services Fases 1a Fase –Web Services Simples 2a Fase –Web Services EAI (enterprise application integration) Focado no cliente, stateless, SOAP over HTTP/S Implantado dentro da organização para permitir a integração interna. 3a Fase – Business Web Services Implantado em extranet para transações comerciais com parceiros de negócio, fornecedores e clientes, ebXML & UBL Business Web Services J2EE ebXML e UBL Plataforma padrão para implementação do serviço Electronic Business using eXtensible Markup Language (ebXML) Universal Business Language (UBL) Padrões business web services Mais de 16 fornecedores e muito projetos Open Source http://ebxml.xml.org/ Liberty Project Padronização para sistema de identificação Business Web Services (B2B) x (ebXML) Colaboração B2B Entrega de mensagem segura e confiável Perfil do Parceiro Repositório dos dados de objetos de negócio. Colaboração B2B Web Services Simples Interação Simples Orientado para cliente Processos curtos Sem necessidade de colaboração de negócio Sem perfil do parceiro Não confiável, não seguro Sem repositório Não suporta atribuição legal Colaboração B2B Interação Complexa Orientado a negócio Processos longos Suporta colaboração de negócio Suporta perfil do parceiro Seguro e confiável Registro e repositório Suporta atribuição legal Colaboração B2B EAI Dentro de uma organização Controle centralizado Contrato implícito Pequeno número de processos de negócio e participantes Colaboração B2B Entre empresas Controle Distribuído Contrato Explícito Grande número de processos de negócio e participantes Tendências Orientadas à Serviço Evolução da EAI para padrão do WebService XML RPC => Mensagem XML Assíncrono Através da Centralização Serviço componentizados Serviços componentizável e composto Dados encapsulados com o componente Proprietário dos dados com os componentes Corretor de WebServices Relações Flexíveis – Componentes Adaptativos Arquitetura do WS - Componentes Serviço de Descrição Serviço de Registro (Publicação) e Descoberta Serviço de Invocação Arquitetura Web Service (simplificada) Registro 2. Client Request Service Location PROCURAR 1. Service Registers PUBLICAR Web Service 3. Client calls Service LIGAR Serviço Cliente SOAP Simple Object Access Protocol Protocolo similar XML é utilizado para codificar dados IIOP for CORBA Internet Inter-Orb Protocol para Common Object Request Broker Architecture JRMP for RMI Java Remote Method Protocol para Remote Method Invocation Protocolo baseado em texto x protocolo binário Suporta XML-based RPC (Remote procedure call) SOAP não é Não é um modelo de componente Não é uma linguagem de programação Não substitui objetos e componentes – EJB, JavaBeans Não substitui Java Não é solução para tudo Não substitui outras soluções de computação distrubuída como RMI. SOAP • Simple Object Access Protocol (SOAP) • Esta definição foi abandonada pela W3C na versão 1.2, pois SOAP não acessa objetos em particular. • SOAP é um protocolo para trocar mensagens XML entre computadores, geralmente utilizando o protocolo HTTP ou HTTPS. • Um cliente Web Service envia uma requisição XML na Internet utilizando os protocolos disponibilizados pelo provedor de serviços. O que SOAP define? Envelope – Mensagem Regras de codificação Convenção RPC Informação sobre o protocolo de comunicação Formato da Mensagem SOAP SOAP Mensagem SOAP Envelope SOAP Cabeçalho Parte Principal MIME (text/xml) Cabeçalho 1 Cabeçalho n Anexos Anexos Anexos t SOAP Corpo Corpo Corpo SOAP Mensagem Envelope Informação de Codificação Cabeçalho Pode conter informações gerenciais Segurança Transação Corpo RPC Métodos e parâmetros Dados de Aplicações SOAP Encoding • Rules of expressing applicationdefined data types in XML • Based on W3C XML Schema • Simple values – Built-in types from XML Schema, Part 2 (simple types, enumerations, arrays of bytes) • Compound values – Structs, arrays, complex types SOAP Request <?xml version="1.0" encoding="UTF-8"?> <S:Envelope xmlns:S= "http://schemas.xmlsoap.org/soap/envelope/"> <S:Header/> <S:Body> <ns2:qtde xmlns:ns2="http://pacoteEstado/"> <arg0>AM</arg0> </ns2:qtde> </S:Body> </S:Envelope> SOAP Response <?xml version="1.0" encoding="UTF-8"?> <S:Envelope xmlns:S= "http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:qtdeResponse xmlns:ns2="http://pacoteEstado/"> <return> Estado: Amazonas IBGE: 13 Area:1570745.6 Quantidade de Municipios:62 </return> </ns2:qtdeResponse> </S:Body> </S:Envelope> SOAP WSDL • Linguagem XML para descrever serviços web. • É descrito como um conjunto de pontos de comunicação (portas) • Pontos são formados por duas partes • Definição abstrata das operações e mensagens • Ligação do protocolo com o formato do endereço Por que WSDL? • Possibilita a automação dos detalhes de comunicação entre os parceiros • Máquinas podem ler WSDL • Máquinas podem chamar um serviço definido em WSDL • Pode ser descoberto através de registros • Árbitragem • Um terceiro pode verificar se a comunicação esta em conformidade com WSDL Arquitetura do Serviço UDDI Registro 1. Serviço de Publicação PUBLICAÇÃO Web Service 2. Requisição do Cliente para Encontrar o Serviço ENCONTRAR 3. Requisição do Serviço LIGAÇÃO Cliente do Serviço UDDI - Define o caminho para publicar e encontrar informação sobre o Web Service Universal Description, Discovery, and Integration UDDI (Universal Description, Discovery and Integration) Páginas Brancas Páginas Amarelas Endereço, contato e identificadores Informações Categorizadas Indústria Produtos / Serviços Localização Páginas Verdes Informações Técnicas dos Serviços Plataforma J2EE & Web Services B2B Applications Existing Applications B2C Applications Web Services Application Server Wireless Applications Enterprise Information Systems Por que J2EE para Web Services? Webservice é um dos muitos serviços disponibilizados por J2EE Não necessita de mudança de arquitetura Componentes existentes pode facilmente expor com Webservice Muitos benefícios do J2EE são preservados para WS Portabilidade, Escalabilidade, Confiabilidade Liberdade de escolha do fornecedor Projeto J2EE Web Services Framework Portabilidade dos componentes de serviços web Diferentes fornecedores de plataformas Diferentes ambientes operacionais Influência do modelo de programação J2EE existente para implementação do serviço. Facilidade de programação e implantação API Java de alto nível Utiliza o modelo de implantação existente J2EE 1.4 and Java EE 5 Guarda chuva para WebServices JSR 109, JAX-RPC, JAXR, EJB 2.1, Servlet 2.4, J2EE Web Services Framework JAX-RPC (JAX-WS) EJB 2.1 Define o modelo de portas Stateless Session Beanbased Web services Servlet 2.4 Define o modelo de programação do cliente Define Serviços Web baseados em Servlet para modelo de portas. Alinhado com JAX-RPC JSR 109 Define padrão de serviços web para modelo de empacotamento e implementação O que é um Web Service? Um conjunto de portas operando com mensagem Portas são operados com um contêiner Contêiner provê um ambiente de execução Contrato para o ambiente de execução que é especificado em JAX-RPC, EJB 2.1, JSR 109 Serviços são descritos em um documento WSDL e publicados para um registro WSDL especifica um contrato entre o provedor do serviço com o cliente. Web Service Componente e Contêiner Modelo Contêiner x Componente Componentes WebServices são executados dentro de um contêiner. Componentes são portáveis Componentes WebServices Web-tier (portas baseadas em Servlet) EJB-tier (portas baseadas em stateless session bean) Web Service Componentes Componentes WebServices Source: Web Services for J2EE (JSR 109), V1.0