Desenvolvimento de Sistemas Distribuídos
Web Services
Aula de 09/11/2011
1
Agenda
IntroduçãoWeb Service
ArquiteturaSoluções
Passos básicosImplementando com Apache Axis
Novos protocolosConclusão
2
O cenário de TI nas corporações
Novas tendências batiam à porta das corporaçõesMigraram 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 é enormeGrandes pacotes comerciais a aplicações
desenvolvidas sob-medida Diferentes “software houses”Diferentes tecnologias (host-centric, cliente-
servidor, 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 SOAEx.: CORBA, RMI, etc...
Interoperabilidade é muito importantePadronizaçãoFraco acoplamento
5
Exemplo: Aplicação 3 camadas
Data Layer Presentation Layer
BusinessLayer
Aplicação Central Compras
boa arquitecturaDNA
Interface da aplicação dá acesso aos dados aplicacionais
6
Service Oriented Architecture
Data Layer Presentation Layer
BusinessLayer
Serviço Central Compras
ServiceFaçade
UI
boa arquitectura 3-tier service
troca de mensagens
Dados e Lógica Negócio
encapsulados por uma Web Service
Façade
Interface desacoplado da
lógica de processamento dos
dados
Web Service Standards permitem ligaçõescross-platform
7
Automação de Processos de Negócio
Serviço Central Compras UI Processo Compras
Serviço RH
Serviços Contabilidade
BusinessProcess
Automation
Múltiplos serviços combinados num único processo de negócio
integração com diferentes plataformas
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
ImplementationImplementation
DataBusinessLogic
MessageMessage
DescriptionDescription
DiscoveryDiscovery
Transport HTTP(S)Transport HTTP(S)
.NET/J2EE.NET/J2EE
DataBusinessLogic
SOAP / XMLSOAP / XML
WSDLWSDL
UDDIUDDI
Arquitetura Web Service
11
Invocação de Web Services
Web Server (e.g. Apache Tomcat)
Web Service Toolkit(e.g. Apache Axis)
Client(e.g. CalcClient.java)
SOAP Binding
SOAP Request
Web ServiceCode(e.g. Calculator.java)
Java to SOAP
Java
JavaSOAP to Java
<soap:Envelope <soap:Body> <add> <i1>10</i1> <i2>5</i2> </add> </soap:Body></soap:Envelope>
calculator.add(10, 5)
add(10, 5)
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
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
www.ws-i.org
14
15
Soluções
16
Fatores decisivos para a escolha
Maturidade da soluçãoIntegração com IDEsReutilização da segurança Escalabilidade (implementação server-
side e stateless)Documentação
17
Tecnologias mais conhecidas
Framework .NET Java
Apache Axis JaxRPCIBM 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 ArchitectureUm serviço é uma função bem definida, auto-
contida 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 EngineJAX-RPC Client SystemJAX-RPC Server System ( Servlet based )SAAJArquitetura 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çãoApache Tomcat (version 5.5.x)
http://jakarta.apache.org/tomcat/Java
http://java.sun.com/Apache Axis
http://ws.apache.org/axis/
26
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;
}}
Exemplo simples
28
Publicando WS com Axis
Depende da utilização de tipos complexos.
Tipos PrimitivosCopie o arquivo “.java” para a pasta webapps
do TomCat e trocando sua extensão de “.java” para “.jws”
Tipos ComplexosDeve-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
descriptionPacotes
- axis.jar- jaxrpc.jar- commons-logging.jar- commons-discovery.jar- saaj.jar- wsdl4j.jar
33
Consumindo um WS usando DIIimport 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
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); } }}
Generate the stubs:java org.apache.axis.wsdl.WSDL2Java \ http://localhost:8080/axis/Calculadora.jws?wsdl
35
Generating Stubs, Compiling and Running the Stub Client
36
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.
Consumindo WS usando WSDL2Java
37
Himalayan X Alpine style
38
Alpine: a proposed alternative
Abraçe XML & XPathUse as ferramentas
XML mais recentesEsqueça rpc/encoded
SOAPQueued/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
ConnectedConnected Applications Applications ManagementManagement BusinessBusiness
ProcessProcess ……
SecuritySecurity ReliabilityReliability TransactionsTransactions
MessagingMessaging
XMLXMLM
etad
ata
Met
adat
a
HTTPHTTP TCPTCP SMTPSMTP ……
Messaging SpecificationsSOAP WS-Addressing MTOM (Attachments) WS-Eventing
Security SpecificationsWS-Security WS-SecureConversation WS-Trust WS-Federation WS-Federation Active Requestor ProfileWS-Federation Passive Requestor ProfileWeb Services Security Kerberos Binding
Reliable Messaging
SpecificationsWS-ReliableMessaging
Transaction Specifications
WS-Coordination WS-AtomicTransaction WS-BusinessActivity
Metadata Specifications
WSDLUDDI WS-Policy WS-PolicyAssertions WS-PolicyAttachment WS-SecurityPolicy
XML Specifications
XML Namespaces in XMLXML Information Set XInclude
Web Services Protocols (WS-*)
42
Security in a Web Services World – IBM/MSFT White Paperhttp://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
SecuritySecurity
PrivacyPrivacyTrustTrustPolicyPolicy
AuthorizationAuthorizationFederationFederationSecureConversationSecureConversation
SOAP FoundationSOAP Foundation
HojeHoje
Web Services Security RoadmapWeb Services Security Roadmap
43
Conclusão
44
Existe muita propaganda sobre Web ServicesPrimeiramente: Eu adoro WS!!!O formato texto aumenta muito o overheadNão existe “neutralidade” de transporteDiferentes versões de padrõesExistem muitos padrões que “interagem”, mas
não definem nenhuma restrição para interagiremUDDI não atende as necessidadesFerramentas de geração automática atrapalhamNã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), WS-Choreography , 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, WS-Federation (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 (WS-Resource Framework), WS-Reliablemessaging , WSRP (WS Remote Portals), WS-Security, WS-SecureConversation, WS-SecurityPolicy, WS Security Services TC, WS-TM (WS Transaction Management), WS-Transfer, WS-Trust, XML-Encryption, XML-Signature
46
Java Web Services Developer Pack 2.0Fast 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, WS-BusinessActivity) 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/webservicesdevelopers.ibm.com/webservicesJavaWorld: www.javaworld.comwebservices.orgwww.uddi.orgxml.apache.orghttp://www.tusc.com.au/tutorial/html/
chap9.html
49
Top Related