Escolar Documentos
Profissional Documentos
Cultura Documentos
Web Services
Web Services
Corporativas Avanadas
Web Services
Marcelo Iury
iury@dsc.ufcg.edu.br
Agenda
Introduo
Web Service
Arquitetura
Solues
Passos bsicos
Implementando com Apache Axis
Novos protocolos
Concluso
Sucesso da Internet
Disponibilizar parte das informaes corporativas a usurios
ou sistemas que extrapolam as fronteiras corporativas
E-commerce
Data Layer
Business
Layer
Presentation
Layer
Interface da aplicao
d acesso aos dados
aplicacionais
Interface desacoplado
da lgica de
processamento dos
dados
boa arquitectura
3-tier service
Data Layer
Business
Layer
Service
Faade
UI
Presentation
Layer
Servios Contabilidade
UI Processo Compras
Business
Process
Automation
Servio RH
Mltiplos servios
combinados num nico
processo de negcio
Web Services
Viso Tecnolgica
Web Services uma tecnologia de chamada remota
de objetos
Permite a infra-estrutura para criao de aplicaes
distribudas (web ou no)
Permitem a criao de pequenos mdulos de cdigo
reutilizveis e disponibilizados para construo de
aplicaes LEGO
Utiliza protocolos Web como meio de transporte e
comunicao
Alto grau de abstrao em relao a linguagens de
programao e plataformas de hardware / software
Data
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)
SOAP Binding
Java to SOAP
Web Service
Code
add(10, 5)
SOAP Request
(e.g. Calculator.java)
SOAP
to Java
Java
Vantagens
Padro adotado pelo W3C e pela indstria.
Atravessa firewalls, roteadores e servidores
de proxy.
Abordagem simples e fcil de distribuio e
de interoperabilidade.
Consrcio WS-I- www.ws-i.org
Garantir a interoperabilidade
Padres abertos
Independente de plataforma
www.ws-i.org
Solues
Maturidade da soluo
Integrao com IDEs
Reutilizao da segurana
Escalabilidade (implementao server-side e
stateless)
Documentao
Passo 2: Implementao
Implementao do servio:
O servio a ser fornecido via web service deve ser
identificado e isolado em uma API tipicamente
stateless;
Normalmente este servio j est implementado
no legado, bastando definir e implementar uma
API para seu acesso na plataforma original.
Passo 4: Criao do WS
Definies de interesse pblico:
Definio da API (e value objects);
Gerao da definio formal do web service (WSDL);
Se VOs forem compatveis, o WSDL conter uma descrio
completa das estruturas de dados (mesmo as complexas);
O WS , na prtica, implementado por uma aplicao web
comum (HTTP/HTTPS), sem o uso de qualquer extenso
proprietria.
Passo 5: Publicao do WS
A publicao do web service , fisicamente, como a
publicao de uma aplicao web comum
A definio pblica do web service (WSDL) estar
disponvel para download pela prpria aplicao web
que o implementa
API de web services ser estvel modificaes e
atualizaes sero divulgadas com antecedncia
Passo 6: Consumo do WS
Gerao do cliente:
Acesso definio do web service (WSDL) tudo
que basta;
IDEs tm a capacidade de gerar stub cliente a
partir do WSDL;
Apache Axis
A SOAP Processing Engine
http://jakarta.apache.org/tomcat/
Java
http://java.sun.com/
Apache Axis
http://ws.apache.org/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;
}
}
Tipos Complexos
Deve-se prover o servidor da habilidade de
desserializar / serializar os objetos complexos.
Deployment Descriptors
JWS bastante simples, mas possui limitaes:
Cdigo-fonte
No pode especificar handlers, mapeamentos, dispatchers
Tipo de Mapeamento
Diferentes tipos de transporte HTTP/S e CP/IP
Anexos Binrios
Etc.
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);
}
}
}
Novos Protocolos
Limitaes actuais:
Segurana?
Garantias de Entrega?
Transaes?
Outros Transportes?
Mensagens Assncronas (One-Way)?
Encaminhamento (Routing/Addressing)?
Outros padres (Ex: Pub/Sub)?
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
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
Concluso
WS-*
Fast Infoset
Service Registry
XML
JAXB
JAXP
JAXR
JAX-RPC
SAAJ
JAXM
XML Web Services Security
Service Registry
Sun Java Streaming XML Parser
JSTL
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
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