Web Services
Download
Report
Transcript Web Services
Desenvolvimento de Sistemas
Distribuídos
Web Services
Aula de 09/11/2011
1
Agenda
Introdução
Web Service
Arquitetura
Soluções
Passos básicos
Implementando com Apache Axis
Novos protocolos
Conclusão
2
O cenário de TI nas corporações
Novas tendências batiam à porta das
corporações
Migraram o foco do “gerenciamento de dados” para o
“gerenciamento dos processos e clientes”
Redesenho dos processos e implantação dos grandes
sistemas de gestão empresarial (ERP)
Sucesso da Internet
Disponibilizar parte das informações corporativas a
usuários ou sistemas que extrapolam as fronteiras
corporativas
E-commerce
3
Enterprise Application Integration
A diversidade de sistemas coexistindo nas
empresas é enorme
Grandes pacotes comerciais a aplicações
desenvolvidas sob-medida
Diferentes “software houses”
Diferentes tecnologias (host-centric, clienteservidor, n-tier, etc),
Diferentes plataformas (mainframes, Unix,
Windows, etc).
4
Service Oriented Architecture (SOA)
SOA é uma arquitetura que representa
funcionalidades do software como
serviços
Já existiam tecnologias para SOA
Ex.: CORBA, RMI, etc...
Interoperabilidade é muito importante
Padronização
Fraco acoplamento
5
Exemplo: Aplicação 3 camadas
boa arquitectura
DNA
Aplicação Central Compras
Data Layer
Business
Layer
Presentation
Layer
Interface da aplicação
dá acesso aos dados
aplicacionais
6
Service Oriented Architecture
troca de mensagens
Interface desacoplado
da lógica de
processamento dos
dados
boa arquitectura
3-tier service
Serviço Central Compras
Data Layer
Business
Layer
Dados e Lógica Negócio
encapsulados por uma
Web Service Façade
Service
Façade
UI
Presentation
Layer
Web Service Standards
permitem ligações
cross-platform
7
Serviços Contabilidade
Automação de Processos de Negócio
integração com diferentes
plataformas
Serviço Central Compras
UI Processo Compras
Business
Process
Automation
Serviço RH
Múltiplos serviços
combinados num único
processo de negócio
8
Web Services
9
Visão Tecnológica
Web Services é uma tecnologia de chamada
remota de objetos
Permite a infra-estrutura para criação de
aplicações distribuídas (web ou não)
Permitem a criação de pequenos módulos de
código reutilizáveis e disponibilizados para
construção de aplicações “LEGO”
Utiliza protocolos Web como meio de transporte
e comunicação
Alto grau de abstração em relação a linguagens
de programação e plataformas de hardware /
software
10
Arquitetura Web Service
SOAP
Message
/ XML
Transport HTTP(S)
Discovery
UDDI
Description
WSDL
Implementation
.NET/J2EE
Business
Logic
Data
11
Invocação de Web Services
Client
(e.g. CalcClient.java)
Java
<soap:Envelope
<soap:Body>
<add>
<i1>10</i1>
calculator.add(10,
5)
<i2>5</i2>
</add>
</soap:Body>
</soap:Envelope>
Web Server
(e.g. Apache Tomcat)
Web Service Toolkit
(e.g. Apache Axis)
SOAP Binding
Java to SOAP
Web Service
Code
add(10, 5)
SOAP Request
(e.g. Calculator.java)
SOAP
to Java
Java
12
Vantagens
Padrão adotado pelo W3C e pela
indústria.
Atravessa firewalls, roteadores e
servidores de proxy.
Abordagem simples e fácil de distribuição
e de interoperabilidade.
Consórcio WS-I- www.ws-i.org
Garantir a interoperabilidade
Padrões abertos
Independente de plataforma
13
www.ws-i.org
170+ fabricantes software envolvidos
Interoperabilidade entre plataformas,
aplicações e linguagens
Maior evidência de que a indústria está
alinhada com os web services
14
15
Soluções
16
Fatores decisivos para a escolha
Maturidade da solução
Integração com IDEs
Reutilização da segurança
Escalabilidade (implementação serverside e stateless)
Documentação
17
Tecnologias mais conhecidas
Framework .NET
Java
Apache Axis
JaxRPC
IBM SOAP Toolkit
Qualquer plataforma que tenha rotinas de
comunicação HTTP e saiba manipular
dados em XML pode implementar Web
Services.
18
Passo 1: Definição do serviço
SOA – Service Oriented Architecture
Um serviço é uma função bem definida, autocontida e que não depende do estado ou
contexto de outros serviços;
19
Passo 2: Implementação
Implementação do serviço:
O serviço a ser fornecido via web service deve
ser identificado e “isolado” em uma API
tipicamente stateless;
Normalmente este serviço já está
implementado no “legado”, bastando definir e
implementar uma API para seu acesso na
plataforma original.
20
Passo 3: Value Objects
Parâmetros de entrada e saída:
A API de um serviço deverá conter apenas
tipos “compatíveis” com web services (tipos
básicos, strings, arrays tipados ou estruturas –
VOs – destes tipos.
21
Passo 4: Criação do WS
Definições de interesse público:
Definição da API (e value objects);
Geração da definição formal do web service (WSDL);
Se VOs forem compatíveis, o WSDL conterá uma
descrição completa das estruturas de dados (mesmo as
complexas);
O WS é, na prática, implementado por uma aplicação
web comum (HTTP/HTTPS), sem o uso de qualquer
extensão proprietária.
22
Passo 5: Publicação do WS
A publicação do web service é, fisicamente,
como a publicação de uma aplicação web
comum
A definição pública do web service (WSDL)
estará disponível para download pela própria
aplicação web que o implementa
API de web services será estável –
modificações e atualizações serão divulgadas
com antecedência
23
Passo 6: Consumo do WS
Geração do cliente:
Acesso à definição do web service (WSDL) é
tudo que basta;
IDEs têm a capacidade de gerar stub cliente a
partir do WSDL;
24
Apache Axis
A SOAP Processing Engine
JAX-RPC Client System
JAX-RPC Server System ( Servlet based )
SAAJ
Arquitetura extensível e flexível
Tools, Exemplos, Documentação, …
Uma boa para começar com Web Services.
Open-source, Apache Software
Foundation
25
Executando Apache AXIS
Instalação
Apache Tomcat (version 5.5.x)
http://jakarta.apache.org/tomcat/
Java
http://java.sun.com/
Apache Axis
http://ws.apache.org/axis/
26
Teste – Happy Axis
http://localhost:8080/axis
27
Exemplo simples
public class Calculator{
public int somar(int numA, int numB){
return numA + numB;
}
public int subtrair(int numA, int numB){
return numA - numB;
}
public int multiplicar(int numA, int numB){
return numA * numB;
}
}
28
Publicando WS com Axis
Depende da utilização de tipos
complexos.
Tipos Primitivos
Copie o arquivo “.java” para a pasta webapps
do TomCat e trocando sua extensão de “.java”
para “.jws”
Tipos Complexos
Deve-se prover o servidor da habilidade de
desserializar / serializar os objetos complexos.
29
Deployment Descriptors
JWS é bastante simples, mas possui limitações:
Código-fonte
Não pode especificar handlers, mapeamentos, dispatchers
O WSDD ( Web Services Deployment
Descriptors ) é um mecanismo que facilita a
instalação e configuração de um WS permitindo:
Tipo de Mapeamento
Diferentes tipos de transporte – HTTP/S e CP/IP
Anexos Binários
Etc.
30
Publicando um WS usando WSDD
Escrevemos um WSDD com os dados de
configurações que desejamos para o nosso
Web Service.
Copiamos os arquivos “.class” que utilizamos no
Web Service para a pasta /WEB-INF/classes do
Axis.
Realizamos um deploy do WSDD utilizando a
ferramenta AdminClient do Axis com o seguinte
comando:
Java org.apache.axis.client AdminClient deploy.wsdd
31
Publicação de Web Services com Apache Axis
32
Consumindo o Web Service (Cliente)
Dynamic Invocation Interface ( DII)
Geração Stubs a partir do Service WSDL
description
Pacotes
- axis.jar
- jaxrpc.jar
- commons-logging.jar
- commons-discovery.jar
- saaj.jar
- wsdl4j.jar
33
Consumindo um WS usando DII
import javax.xml.rpc.Call;
import javax.xml.rpc.Service;
import javax.xml.namespace.QName;
public class CalculadoraClient {
public static void main(String [] args) {
try {
String endpoint = "http://localhost:8080/axis/calculadora.jws";
Service service = new Service();
Call
call = (Call) service.createCall();
call.setOperationName(new QName(endpoint, “somar"));
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
Integer ret = (Integer)call.invoke(new Object[]{new Integer(5), new Integer(6)});
System.out.println(“somar(5, 6) = " + ret);
} catch (Exception e) {
System.err.println("Execution failed. Exception: " + e);
}
}
}
34
Consumindo um WS usando Stubs
Generate the stubs:
java org.apache.axis.wsdl.WSDL2Java \
http://localhost:8080/axis/Calculadora.jws?wsdl
Import localhost.*;
public class CalculadoraClient{
public static void main(String [] args) {
try {
CalculadoraService calcSF = new CalculadoraServiceLocator();
Calculadora calc = calcSF.getCalculadora();
System.out.println(“somar(5, 3) = " + calc.somar(5, 3));
} catch (Exception e) {
System.err.println("Execution failed. Exception: " + e);
}
}
}
35
Generating Stubs, Compiling and
Running the Stub Client
36
Consumindo WS usando WSDL2Java
Clique com o botão direito
do mouse sobre o arquivo,
selecione a opção
WSDL2Java e depois
clique em Generate. As
classes serão criadas num
pacote padrão.
37
Himalayan X Alpine style
38
Alpine: a proposed alternative
Abraçe XML & XPath
Use as ferramentas
XML mais recentes
Esqueça rpc/encoded
SOAP
Queued/Asynchronous
API
WSDL-first
39
Novos Protocolos
40
Limitações actuais:
Segurança?
Garantias de Entrega?
Transações?
Outros Transportes?
Mensagens Assíncronas (One-Way)?
Encaminhamento (Routing/Addressing)?
Outros padrões (Ex: Pub/Sub)?
41
Web Services Protocols (WS-*)
Security
Management
Reliability
Business
Process
Transactions
…
Metadata
Connected
Applications
Messaging
TCP
Security Specifications
WS-Security
WS-SecureConversation
WS-Trust
WS-Federation
WS-Federation Active
Requestor Profile
WS-Federation Passive
Requestor Profile
Web Services Security
Kerberos Binding
Reliable Messaging
Specifications
WS-ReliableMessaging
XML
HTTP
Messaging Specifications
SOAP
WS-Addressing
MTOM (Attachments)
WS-Eventing
SMTP
…
Transaction Specifications
WS-Coordination
WS-AtomicTransaction
WS-BusinessActivity
42
Metadata Specifications
Web Services Security Roadmap
Hoje
SecureConversation
Federation
Authorization
Policy
Trust
Privacy
Security
SOAP Foundation
Security in a Web Services World – IBM/MSFT White Paper
http://msdn.microsoft.com/library/en-us/dnwssecur/html/securitywhitepaper.asp
Abril 2002
WS-Security Specification
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss
43
Conclusão
44
Existe muita propaganda sobre Web
Services
Primeiramente: Eu adoro WS!!!
O formato texto aumenta muito o overhead
Não existe “neutralidade” de transporte
Diferentes versões de padrões
Existem muitos padrões que “interagem”, mas
não definem nenhuma restrição para
interagirem
UDDI não atende as necessidades
Ferramentas de geração automática atrapalham
Não existe interoperabilidade 100%
45
WS-*
ASAP (Asynchronous Service Access Protocol), BPEL4WS (Business
Process Execution Language), ebSOA TC (Electronic Business Service
Oriented Architecture), ebXML (Electronic Business XML), International
Health Continuum TC, oBIX TC , SAML (Security Assertion Markup
Language), SOAP (Simple Object Access Protocol), SOAP MTOM (SOAP
Message Transmission Optimization Mechanism), ranslation WS TC , UBL
(Universal Business Language), UDDI (Universal Description, Discovery,
and Integration), WS-Addressing, WS-AtomicTransaction, WSBPEL
(Business Process Execution Language), WS-CAF (WS Composite
Application Framework ), WS-CF (WS Coordination Framework), WSChoreography , WS-CDL (Web Services Choreography Description
Language), WS-Coordination, WS-CTX, WS Context, WS-Discovery (Web
Services Dynamic Discovery), WSDL (WS Description Language), WSDM
(WS Distributed Management), WS-Enumeration, WS-Eventing, WSFederation (Web Services Federation Language), WSIL (WS Inspection
Language), WS-Manageability, WS-MetadataExchange (Web Services
Metadata Exchange), WS-MessageDelivery, WS-Notification, WS-Policy,
WS-Provisioning, WS-Reliability, WS Reliable Messaging, WS-RF (WSResource Framework), WS-Reliablemessaging , WSRP (WS Remote
Portals), WS-Security, WS-SecureConversation, WS-SecurityPolicy, WS
Security Services TC, WS-TM (WS Transaction Management), WSTransfer, WS-Trust, XML-Encryption, XML-Signature
46
Java Web Services Developer Pack
2.0
Fast Infoset
Service Registry
XML
JAXB
JAXP
JAXR
JAX-RPC
SAAJ
JAXM
XML Web Services Security
Service Registry
Sun Java Streaming XML Parser
JSTL
47
Web Services Project @ Apache
Addressing (WS-Addressing)
Axis (SOAP)
EWS (J2EE 1.4)
JaxMe (JAXB)
jUDDI (UDDI)
Kandula (WS-Coordination, WS-AtomicTransaction, WSBusinessActivity)
Mirae (J2ME)
Muse (WSDM MUWS)
Pubscribe (WS-Notification)
Sandesha (WS-ReliableMessaging)
Scout (JAXR)
Woden (WSDL 2.0)
WSIF
WSRF (WS-ResourceFramework)
WSS4J (WS-Security)
XML-RPC
48
Fontes de consulta
http://java.sun.com/webservices
developers.ibm.com/webservices
JavaWorld: www.javaworld.com
webservices.org
www.uddi.org
xml.apache.org
http://www.tusc.com.au/tutorial/html/chap9
.html
49