Web Services

Propaganda
Estudo de caso:
Café Expresso Ltda.
A estória de João...
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Café Expresso Ltda.
• Características:
•Sistema de controle de vendas de café:
•Implementado em Delphi
•Interface Windows p/ Desktop
•Possui um SGBD
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Café Expresso Ltda.
Um dia o chefe de João traz novos requisitos...
Preciso vender café
através da Internet!!
Estou perdendo
dinheiro! Quero isso
PARA ONTEM!
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Café Expresso Ltda.
João pensa...
Como vou integrar o
sistema existente com
um novo módulo de
acesso à Internet?
Terei que
reescrever o
sistema em Java?
ASP?
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Café Expresso Ltda.
Enquanto isso, o chefe traz mais requisitos...
Meus concorrentes estão
vendendo mais variedades de café
do que eu! Preciso integrar nosso
sistema de venda pela internet
com os sistemas de meus
fornecedores, e de novos
fornecedores, para aumentar meus
lucros!!!
PARA ONTEM!!!
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Café Expresso Ltda.
João desesperado...
Já estou
reescrevendo o
sistema em
Java...
Pelo menos o
sistema dos
fornecedores é
escrito em
Java??
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Café Expresso Ltda.
O chefe esclarece...
Um dos
fornecedores
tem o sistema
em Delphi...
... o outro em C++
...
... o outro em
Visual Basic ...
Preciso disso
PRA ONTEM!
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Café Expresso Ltda.
Precisamos ajudar João...
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Web Services
Parte 1 – Introdução
Rodrigo Rebouças de Almeida
[email protected]
Arquiteturas - Histórico

MainFrames
Terminal
Mainframe
Terminal
[ Dados + Lógica + Interface ]
Terminal
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Arquiteturas - Histórico

Arquitetura Cliente-Servidor
PC
[ Dados ]
Cliente
PC
Cliente
PC
[ Lógica + Interface ]
Cliente
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Servidor c/ SGBD
Arquiteturas - Histórico

Arquitetura em n-camadas
Browser Web
Browser Web
Internet
Servidor Web
[ Interface ]
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
SGBD
Servidor de
Aplicação
[ Lógica ] [ Dados ]
O Problema de João...
1. Integrar o sistema legado com um novo sistema
2. Integrar o sistema da empresa com os sistemas
dos fornecedores A, B, C
Cliente
1
Fornecedor A
Fornecedor B
Internet
PC
2
PC
Cliente
Cliente
Servidor de Aplicação
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Fornecedor C
Vamos tentar resolver o problema de
João usando Web Services.
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
O que é um Web Service?

Um Web Service é um ponto de acesso a
funcionalidade que pode ser:
 Localizado
dinamicamente
 Ter sua interface descoberta automaticamente,
porque o serviço sabe se descrever
 Ser chamado na Web
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Web services

Se fundamenta basicamente em três tecnologias:



Web Services Description Language (WSDL)
 Define a interface de acesso ao serviço
Simple Object Access Protocol (SOAP)
 Um protocolo baseado em XML. Permite que os clientes
se comuniquem com os provedores de serviço.
Universal Description, Discovery and Integration (UDDI)
 Permite Web services registrarem suas características,
permitindo que outras aplicações as encontrem.
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Usar XML para toda a comunicação



Extended Markup Language (XML)
Oferece um formato ASCII para trocar qualquer tipo de
informação estruturada
Usa o “estilo” HTML de markup com tags


<pessoa nome=”João”>
<frutasFavoritas>
<fruta>Manga</fruta>
<fruta>Maçã</fruta>
<fruta>Uva</fruta>
</frutasFavoritas>
</pessoa>
Os tags podem ser definidos para criar uma “Aplicação XML” ou
“Linguagem XML”
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Usar SOAP fazer RPC

SOAP é uma forma de fazer Remote Procedure Call (RPC)
usando documentos XML
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Descrever o serviço remoto usando WSDL



WSDL = Web Services Description Language
Pronunciado “wisdle”
É uma linguagem XML que contém
informação sobre a interface, a semântica, e
outros detalhes de chamadas a um Web
Service
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Definir ontologias



Precisamos saber o que as coisas significam
Exemplo: como mandar uma ordem de serviço se
não sei o que cada campo deve conter?
Várias organizações definem e padronizam
ontologias



ebXML
RosettaNet
(...)
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Usar UDDI para localizar serviços



UDDI = Universal Description, Discovery, and
Integration
Permite cadastrar serviços e localizá-los
Não é necessário usar UDDI se o cliente já tiver o
documento WSDL
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Web services, Arquitetura
3 - Provê serviço
Serviço cliente
<< SOAP >>
<< SOAP >>
Provedor
de serviço
<< SOAP >>
1 - Registra-se
2 - Busca
serviço
Serviço
de diretório
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
SOAP

Simple Object Access Protocol
 Define
uma forma de transferir documentos XML
através da Internet;
 Aplicações cliente se comunicam com Web
services usando SOAP como protocolo;
 SOAP define um envelope para transmissão de
mensagens, oferece regras para representar
“remote procedure calls” (RPCs);
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
SOAP
É
o padrão para troca de mensagens usando XML;
 Desenvolvido sob a supervisão da W3C;
 Permite a transferência de mensagens através de
protocolos de alto nível, como HTTP e SMTP;
 É mais usado sobre HTTP, pois consegue
atravessar firewalls!
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
SOAP
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
SOAP

Estrutura de uma mensagem SOAP:
<SOAP:Envelope xmlns:SOAP= http://schemas.xmlsoap.org/soap/envelope/>
<SOAP:Header>
<!conteudo do cabecalho >
</SOAP:Header>
<SOAP:Body>
<!conteudo do corpo>
</SOAP:Body>
</SOAP:Envelope>
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
João agora não precisa
reimplementar o sistema
de controle de vendas de
café para este ser
acessível via Internet...
Basta fazer o sistema
existente e o módulo de
acesso a Internet
conversarem usando
SOAP e descrever os
dados em XML
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Integração entre
aplicações dentro de
um domínio
administrativo
Parser XML
PC
PC
Cliente
Cliente
Internet
XML
SOAP
HTML
XML
Servidor de Aplicação
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Resolvemos o 1o problema,
publicamos o sistema existente na
Internet, agora precisamos ligar
nosso sistema aos sistemas dos
nossos fornecedores!
Podemos usar SOAP como
protocolo de comunicação! Mas,
como saber a interface do
sistema do meu fornecedor?
Como posso fazer meu sistema
iteragir com um sistema escrito
em outra linguagem, em outra
plataforma?
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
WSDL

Web Service Description Language
É
uma linguagem XML para descrever Web
services;
 Segue um conceito parecido da “Interface
Definition Language” (IDL) usado em CORBA;
 Descreve detalhes como definição de tipos de
dados, operações suportadas pelo Web service,
formato das mensagens, endereço de rede do
Web service, etc.
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Resolvido o problema, agora João tem seu
Sistema integrado com os fornecedores.
WSDL
<< SOAP >>
Fornecedor A
WSDL
Café Expresso
Ltda.
Internet << SOAP >>
WSDL
<< SOAP >>
Fornecedor B
WSDL
Fornecedor C
Último detalhe... Como descobrir
novos fornecedores??
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
UDDI



Universal Description, Discovery and
Integration
Provê um mecanismo para registro e
localização de Web services;
É um diretório que contém vários Web
services registrados, onde associamos um
nome a um serviço, como um Web service.
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
UDDI



Permite que empresas registrem seus
serviços e possam interagir com outras
empresas interessadas.
UDDI é um Webservice baseado em XML e
SOAP;
A interação com um serviço UDDI é baseado
em interfaces SOAP pré-definidas.
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
UDDI

Um registro UDDI é organizado em duas entidades
fundamentais:



businessEntity : provê informações a sobre a empresa que
está publicando o serviço. Contém um ou mais elementos
businessService;
businessService: representa um serviço provido pela
businessEntity;
Cada entidade é identificada por uma chave única,
permitindo que haja referências a serviços, definições
WSDL;
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
João agora pode encontrar outros
Fornecedores através de um serviço UDDI.
UDDI Service
Registram-se
Fornecedores XYZ
Busca novos fornecedores
WSDL
Café Expresso
Ltda.
<< SOAP >>
WSDL
Internet
<< SOAP >>
Fornecedor A
WSDL
<< SOAP >>
Fornecedor B
WSDL
Fornecedor C
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
João agora pode encontrar outros
Fornecedores através de um serviço UDDI.
UDDI Service
Registram-se
Fornecedores XYZ
Comunica-se com novos fornecedores
<<SOAP>>
WSDL
Café Expresso
Ltda.
<< SOAP >>
WSDL
Internet
<< SOAP >>
Fornecedor A
WSDL
<< SOAP >>
Fornecedor B
WSDL
Fornecedor C
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Ferramentas - Como desenvolver Web
Services?

Ferramentas da Sun

JWSDP com muitas APIs:




JAXP, JAXB, JAX-RPC, SAAJ, JAXR, JWSDL
Ferramentas da IBM
Ferramentas da Microsoft (.NET)
Ferramentas da Apache

Axis do projeto Apache

WSDL2Java converte WSDL para Java
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Exemplo com Axis

Usando JWS
 Criando
um serviço de soma e subtração de
números

Recursos:
 Axis
 Apache
Tomcat 5.x
 Eclipse 3.1
 Plugin do Eclipse: Lavadora
http://lavadora.sourceforge.net/
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Passo a passo (1)

Passo 1: Download Axis


Passo 2: Crie contexto Axis no Tomcat


Copie (...)/axis/webapps/axis para o diretório webapps do
Tomcat
Passo 3: Inicie o Tomcat e teste a instalação do Axis



http://ws.apache.org/axis/
Acesse: http://localhost:8080/axis/happyaxis.jsp
Corrija as dependências
Passo 4: Crie o WebService


Crie uma classe Java, altere a extensão de .java para .jws
Copie o jws para o contexto do Axis, no tomcat
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Passo a passo (2)

Passo 5: Acesse o WSDL do webservice gerado


Passo 6: Instale o plugin do Eclipse



Download: http://lavadora.sourceforge.net
Descompacte no diretório onde seu Eclipse está instalado
Passo 7: Crie o cliente para acessar o serviço



http://localhost:8080/axis/Calculator.jws?wsdl
No Eclipse: File -> New -> WebServices-> Web Service
Client
Digite o caminho do wsdl do seu serviço:
http://localhost:8080/axis/Calculator.jws?wsdl
Passo 8: Execute o cliente e acesse o webservice

Veja código no próximo slide
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Passo a passo (3)

Código do cliente
public static void main(String[] args) {
try {
CalculatorServiceLocator locator = new
CalculatorServiceLocator();
Calculator calc =
locator.getCalculator();
System.out.println(calc.add(10,5));
} catch (ServiceException e) {
} catch (RemoteException e) { }
}
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Conclusões

João não foi despedido
João com seu salário
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Conclusões

O chefe de João conseguiu barrar a
concorrência..
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Fontes de consulta

Axis User’s Guide
http://ws.apache.org/axis/java/user-guide.html






http://java.sun.com/webservices
developers.ibm.com/webservices
JavaWorld: www.javaworld.com
webservices.org
www.uddi.org
xml.apache.org
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Obrigado!!
Rodrigo Rebouças de Almeida
[email protected]
http://rodrigor.com
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Download