Web Services

Propaganda
Desenvolvimento de Aplicações
Corporativas Avançadas
Web Services
Marcelo Iury
[email protected]
Agenda
Introdução
Web Service
Arquitetura
Soluções
Passos básicos
Implementando com Apache Axis
Novos protocolos
Conclusão
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
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).
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
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
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
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
Web Services
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
Arquitetura Web Service
SOAP
Message
/ XML
Transport
HTTP(S)
Discovery
UDDI
Description
WSDL
Implementation
.NET/J2EE
Business
Logic
Data
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
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
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
Soluções
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
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.
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;
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.
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.
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.
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
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;
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
Executando Apache AXIS
 Instalação
Apache Tomcat (version 4.1.x)

http://jakarta.apache.org/tomcat/
Java

http://java.sun.com/
Apache Axis

http://ws.apache.org/axis/
Teste – Happy Axis
 http://localhost:8080/axis
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;
}
}
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.
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.
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
Publicação de Web Services com Apache Axis
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
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);
}
}
}
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);
}
}
}
Generating Stubs, Compiling and
Running the Stub Client
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.
Himalayan X Alpine style
Alpine: a proposed alternative
 Abraçe XML & XPath
 Use as ferramentas
XML mais recentes
 Esqueça rpc/encoded
SOAP
 Queued/Asynchronous
API
 WSDL-first
Novos Protocolos
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)?
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
 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
Conclusão
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%
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
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
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
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
Download