EJB WebService
1
Caio Nakashima
caio.nakashima@mds.gov.br
caionakashima@gmail.com
Things - 1014 Computers 108 Embedded Computers 1011 Desktops Transfers
Transfers TransactionsTransactions ContentContent Telemetry Telemetry ControlControl Clients Functions
Waves of
Network Computing
IP v4 Switches Switches Packages Packages Thermostats Thermostats Clothes Clothes Phones Phones TVs TVs Cars Cars Games Games Organization Protocols IP v4 IP Layer IP v6Things - 1014 Computers 108 Embedded Computers 1011 Desktops Clients Functions
Waves of
Network Computing
IP v4 Phone Phone ss TVs TVs Cars Cars Games Games Switches Switches Packages Packages Thermostats Thermostats Clothes Clothes TransfersTransfers TransactionsTransactions ContentContent TelemetryTelemetry ControlControl
Client/Server Web Applications Web Applications Web Web Services Services Fractal Fractal Polyarchical Polyarchical N-tier FT PTelnet HTTP X RPC/XDR SMTP Organization Protocols SOAP SOAP RMI/IIOP RMI/IIOP Jini Jini Identity Identity UDDI UDDI LDAP LDAP JXTA JXTA IP v6 IP v4 IP Layer
O novo software
Locater Locater Payment Payment NewNew User’sUser’s X10
X1066 Developer
Developer X1X1
Software como serviço
Software
Authentication Authentication New New ServiceService DeviceDeviceUser’sUser’s Calendar
Calendar X10
Evolução da Plataforma
Catch Catch Phrase Phrase The Network The Network Is the Is the ComputerComputer ObjectsObjects
Legacy to Legacy to the Web the Web The Computer The Computer Is the Is the Network Network Network of Network of Embedded Embedded Things Things Network Network of Things of Things Scale Scale When/Peak When/Peak 100s 100s 1,000s1,000s 1,000,000s1,000,000s 10,000,000s10,000,000s 100,000,000s100,000,000s 100,000,000100,000,000 ss 1984/1987 1984/1987 1990/19931990/1993 1996/19991996/1999 2001/20032001/2003 1998/20041998/2004 2004/20092004/2009 Leaf Leaf Protocol(s) Protocol(s) Directory(s) Directory(s) Session Session X X XX +HTTP+HTTP (+JVM)
(+JVM) +XML+XMLPortalPortal +RM+RM UnknownUnknown NS, NS+
NS, NS+ +CDS+CDS +LDAP(*)+LDAP(*) +UDDI+UDDI +Jini+Jini +?+?
RPC, XDR
RPC, XDR +CORBA+CORBA +CORBA,+CORBA, RM
RM +SOAP,+SOAP,XMLXML +RM/Jini+RM/Jini +?+? Schematic
Padrões de comunicação
Communication Patterns: Java 2
Business Systems Business Systems DB Server DB Server DB Server DB Server App Server App Server Web Server Web Server Browser Browser Client Client Web Application J2EE J2EE J2SE/ J2SE/ J2ME J2MEPadrão de comunicação: Sun ONE
Bus. Bus. Sys. Sys. DB DB XML XML (UDDI, (UDDI, SOAP) SOAP) App App Web Web Browser BrowserContext and Identity Context and Identity (LDAP, Policy, Liberty) (LDAP, Policy, Liberty)
J2EE J2EE J2SE/ J2SE/ J2ME J2ME SOAP) SOAP) 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
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
• 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 Cliente Servidor Web-based computing Clients PDA Cell Phone Server Laptop Kiosk Workstation Web Services/Peer-to-PeerCliente/Serivdor x. Web Services
Dentro da Empresa Dependente de um conjunto de linguagem Entre Empresas Independente de Linguagem de ProgramaçãoCliente / Servidor
Web Service
de linguagem
Procedural
Geralmente limitado por um
protocolo de transporte Fortemente Acoplado Processamento Eficiente (tempo / espaço) 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 – provê um nível de integração e compartilhamento de
recursos mais intenso e transparente ao usuário caracterizando sistemas operacionais distribuídos.
Aplicação Web x Web Services
Interação Usuário -
InteraçãoPrograma-Aplicação Web
Web Service
Interação Usuário -Programa Componentes de Integração Estática Serviço Monolítico InteraçãoPrograma-Programa 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 Registro Descoberta do Serviço Entrega de Serviço Chamada do ServiçoMontagem do Serviço
Macro Serviço Micro Serviço Business Micro Serviço Micro Serviço Business Process ManagementAgregação do Serviço
Portal de Serviço de
Ações Entrada: Codigo Saída: Preço, Notícia,
Agência Notícias 1 Entrada: Codigo Saída: Notícias Usuário Nasdaq Entrada: Codigo Saída: Preço
Saída: Preço, Notícia, Comércio Corretor 1 Entrada: Codigo, Preço, Qtde Usuário Agência Notícias n Entrada: Codigo Saída: Notícias Corretor n Entrada: Codigo, Preço, Qtde
Web Services?
Plataforma Neutra É acessível de forma padrão Acessível de forma interoperacional Uso simplificado e Uso simplificado e ubíquo“Barato” – não caro
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.
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
Fornecedor
Distribuidor
Internet XML
XML
Web Services Exemplo de uso
Fornecedor Logistica Fábrica Internet XML XML
“Crescimento baseado em uma infraestrutura leve e padronizada para troca de informações em aplicações de negócio”
Web Services
Serviço
Apl ServiçoApl ServiçoApl
Programa Monolítico
Impacto do Web Services nas aplicações
“Des integração da aplicação”
Serviço
Sistema SistemaServiço SistemaServiço
Computador Programa Applicação
Finanças
• Um web service é
acessível através de
aplicações ou outros
serviços.
Web Services Balanço ContasMacro web services – Sistemas Virtuais
Finanças
Notícias
Informação Estoque
“Portfolio” pode ser uma aplicação, um portal ou um webservice Portfolio Contas Fluxo de Caixa CNN UOL
Gramática Bank balance
• Um web service é
acessível através de
aplicações ou outros
serviços.
Web Services Ortografia DicionárioMicro web services – Sistemas Virtuais
Gramática
Publicação Mídia
“Editor de Texto” pode ser aplicação, uma funcionalidade ou um web service Editor de Texto Dicionário Sinônimos c:\... http://...
Três leis da computação
Lei de Moore
− O poder da computação dobra cada 18 meses.
Lei de Gilder
− A largura de banda dobra a cada 12 meses. − A largura de banda dobra a cada 12 meses.
Lei de Metcalfe (Efeito da Rede)
− O valor da rede cresce exponencialmente a medida
Impacto da Integração
Gatilho do efeito da rede
Web Services Integração
customizada
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
Concept Distributed Computing ala CORBA / Java Basic Web Services
Concept Basic Web Services
Interface Description CORBA IDL, Java interface WSDL
RPC support ORBs, Idl2java compilers, rmic SOAP, compilers for WSDL
Service Registry CORBA naming service, JNDI UDDI
Messaging support CORBA Event/Notification service, JMS ?
Transaction support CORBA Transaction service, JTS ?
Secuity support CORBA Security service, Java security ?
Webservice requer somente:
SOAP, WSDL, UDDI
Necessita de uma semântica de alto nível
Webservice é baseado no paradigma
RPC
Mitos: Web Services novo Conceito
RPC
Modelo de comunicação baseado em
documentos será mais popular.
Webservices deve ser baseado em HTTP:
Outros protocolos de transporte podem ser
Web Services
O que falta além dos serviços:
− SOAP, WSDL, UDDI
Deficiências:
Qualidade de serviço Gerenciamento Gerenciamento Segurança Transação Contexto de usuário Gerenciamento de Identidade WorkflowWeb Services - Receita
1
afase
Implantar uma aplicação internamente da
organização procurando interoperabilidade.
SOAP sobre HTTP/S
2
2 fase (1 a 2 anos)
afase (1 a 2 anos)
Implantação com um parceiro confiável.
Registro privado.
3
afase (pelo menos 3 a 4 anos)
Implantar para todos.
Registro público.
Web Services Fases
1
aFase –Web Services Simples
Focado no cliente, stateless, SOAP over HTTP/S
2
aFase –Web Services EAI (enterprise
application integration)
Implantado dentro da organização para permitir a
integração interna.
Implantado dentro da organização para permitir a integração interna.
3
aFase – Business Web Services
Implantado em extranet para transações comerciais
com parceiros de negócio, fornecedores e clientes, ebXML & UBL
Business Web Services
J2EE
Plataforma padrão para implementação do serviço
ebXML e UBL
Electronic Business using eXtensible Markup
Language (ebXML)
Universal Business Language (UBL)
Universal Business Language (UBL) Padrões business web services
Mais de 16 fornecedores e muito projetos Open Source http://ebxml.xml.org/
Liberty Project
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
Colaboração B2B
Interação Simples
Orientado para cliente Processos curtos Sem necessidade de Interação Complexa Orientado a negócio Processos longos Suporta colaboração de
Web Services Simples
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
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
Dentro de uma
organização
Controle
centralizado
Entre empresas
Controle
Distribuído
Contrato Explícito
EAI
Colaboração B2B
centralizado
Contrato implícito
Pequeno número
de processos de
negócio e
participantes
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
Arquitetura do WS - Componentes
Serviço de Descrição
Serviço de Registro (Publicação) e
Descoberta
Arquitetura Web Service (simplificada)
Registro Registro 1. Service Registers PUBLICAR 3. Client calls Service LIGAR 2. Client Request Service Location PROCURAR WebSOAP
S
imple
O
bject
A
ccess
P
rotocol
Protocolo similar
− IIOP for CORBA
− Internet Inter-Orb Protocol para Common Object
Request Broker Architecture JRMP for RMI
− JRMP for RMI
− Java Remote Method Protocol para Remote
Method Invocation
XML é utilizado para codificar dados
Protocolo baseado em texto x protocolo binário
Suporta XML-based RPC (Remote
SOAP não é
Não é um modelo de componente
Não substitui objetos e componentes – EJB,
JavaBeans
Não é uma linguagem de programação
Não é uma linguagem de programação
Não substitui Java
Não é solução para tudo
Não substitui outras soluções de computação
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
• 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 Envelope SOAP Cabeçalho
SOAP Mensagem
Parte Principal MIME
(text/xml) Cabeçalho 1 Anexos Anexos t SOAP Corpo Cabeçalho n Corpo Corpo Anexos
SOAP Mensagem Envelope
Informação de Codificação
Cabeçalho
Pode conter informações gerenciais
Segurança Transação Transação
Corpo
RPC Métodos e parâmetros Dados de AplicaçõesSOAP Encoding
•
Rules of expressing
application-defined
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
SOAP Request
<?xml version="1.0" encoding="UTF-8"?> <S:Envelope xmlns:S= "http://schemas.xmlsoap.org/soap/envelope/"> <S:Header/> <S:Body> <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 Estado: Amazonas IBGE: 13 Area:1570745.6 Quantidade de Municipios:62
</return>
</ns2:qtdeResponse> </S:Body>
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
•
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 WSDL
•
Pode ser descoberto através de registros
•
Árbitragem
• Um terceiro pode verificar se a comunicação esta em
Arquitetura do Serviço
UDDI Registro 1. Serviço de Publicação 2. Requisição do Cliente para Encontraro Serviço
UDDI - Define o caminho para publicar e
encontrar informação sobre o Web Service
Universal Description, Discovery, and Integration
Publicação PUBLICAÇÃO 3. Requisição do Serviço LIGAÇÃO o Serviço ENCONTRAR Web
UDDI (Universal Description, Discovery and Integration)
Páginas Brancas
Endereço, contato e identificadores
Páginas Amarelas
Informações Categorizadas IndústriaIndústria Produtos / Serviços LocalizaçãoPáginas Verdes
Plataforma J2EE & Web Services
B2B Applications B2C Existing Applications B2C Applications Web Services Wireless Applications Application Server Enterprise Information Systems ApplicationsPor 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 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.
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
J2EE Web Services Framework
JAX-RPC (JAX-WS)
Define o modelo de programação do cliente
Define Serviços Web baseados em Servlet para
modelo de portas.
EJB 2.1
Define o modelo de portas Stateless Session
Bean-based Web services based Web services
Servlet 2.4
Alinhado com JAX-RPC
JSR 109
Define padrão de serviços web para modelo de
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 é 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
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
Componentes WebServices
Web-tier (portas baseadas em Servlet)
Web Service Componentes
Componentes WebServices