Você está na página 1de 49

Desenvolvimento de Aplicaes

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

O cenrio de TI nas corporaes


Novas tendncias batiam porta das corporaes
Migraram o foco do gerenciamento de dados para o
gerenciamento dos processos e clientes
Redesenho dos processos e implantao dos grandes
sistemas de gesto empresarial (ERP)

Sucesso da Internet
Disponibilizar parte das informaes corporativas a usurios
ou sistemas que extrapolam as fronteiras corporativas
E-commerce

Enterprise Application Integration


A diversidade de sistemas coexistindo nas
empresas enorme
Grandes pacotes comerciais a aplicaes
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 servios
J existiam tecnologias para SOA
Ex.: CORBA, RMI, etc...

Interoperabilidade muito importante


Padronizao
Fraco acoplamento

Exemplo: Aplicao 3 camadas


boa arquitectura
DNA

Aplicao Central Compras

Data Layer

Business
Layer

Presentation
Layer
Interface da aplicao
d acesso aos dados
aplicacionais

Service Oriented Architecture


troca de mensagens

Interface desacoplado
da lgica de
processamento dos
dados

boa arquitectura
3-tier service

Servio Central Compras

Data Layer

Business
Layer

Dados e Lgica Negcio


encapsulados por uma
Web Service Faade

Service
Faade

UI

Presentation
Layer

Web Service Standards


permitem ligaes
cross-platform

Servios Contabilidade

Automao de Processos de Negcio

integrao com diferentes


plataformas

Servio Central Compras

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

Arquitetura Web Service


SOAP
Message
/ XML
Transport
HTTP(S)
Discovery
UDDI
Description
WSDL
Implementation
.NET/J2EE
Business
Logic

Data

Invocao 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
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

170+ fabricantes software envolvidos


Interoperabilidade entre plataformas, aplicaes e
linguagens
Maior evidncia de que a indstria est alinhada com os
web services

Solues

Fatores decisivos para a escolha

Maturidade da soluo
Integrao com IDEs
Reutilizao da segurana
Escalabilidade (implementao server-side e
stateless)

Documentao

Tecnologias mais conhecidas


Framework .NET
Java
Apache Axis
JaxRPC
IBM SOAP Toolkit

Qualquer plataforma que tenha rotinas de


comunicao HTTP e saiba manipular dados
em XML pode implementar Web Services.

Passo 1: Definio do servio


SOA Service Oriented Architecture
Um servio uma funo bem definida, autocontida e que no depende do estado ou contexto
de outros servios;

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 3: Value Objects


Parmetros de entrada e sada:
A API de um servio dever conter apenas tipos
compatveis com web services (tipos bsicos,
strings, arrays tipados ou estruturas VOs
destes tipos.

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

JAX-RPC Client System


JAX-RPC Server System (Servlet based)
SAAJ
Arquitetura extensvel e flexvel
Tools, Exemplos, Documentao,
Uma boa para comear com Web Services.

Open-source, Apache Software Foundation

Executando Apache AXIS


Instalao
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 utilizao de tipos complexos.
Tipos Primitivos
Copie o arquivo .java para a pasta webapps do
TomCat e trocando sua extenso 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 limitaes:
Cdigo-fonte
No pode especificar handlers, mapeamentos, dispatchers

O WSDD ( Web Services Deployment Descriptors )


um mecanismo que facilita a instalao e
configurao de um WS permitindo:

Tipo de Mapeamento
Diferentes tipos de transporte HTTP/S e CP/IP
Anexos Binrios
Etc.

Publicando um WS usando WSDD


Escrevemos um WSDD com os dados de
configuraes 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

Publicao de Web Services com Apache Axis

Consumindo o Web Service (Cliente)


Dynamic Invocation Interface ( DII)
Gerao 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 boto direito


do mouse sobre o arquivo,
selecione a opo
WSDL2Java e depois
clique em Generate. As
classes sero criadas num
pacote padro.

Himalayan X Alpine style

Alpine: a proposed alternative


Abrae XML & XPath
Use as ferramentas XML
mais recentes
Esquea rpc/encoded
SOAP
Queued/Asynchronous
API
WSDL-first

Novos Protocolos

Limitaes actuais:

Segurana?
Garantias de Entrega?
Transaes?
Outros Transportes?
Mensagens Assncronas (One-Way)?
Encaminhamento (Routing/Addressing)?
Outros padres (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

Concluso

Existe muita propaganda sobre Web


Services

Primeiramente: Eu adoro WS!!!


O formato texto aumenta muito o overhead
No existe neutralidade de transporte
Diferentes verses de padres
Existem muitos padres que interagem, mas no
definem nenhuma restrio para interagirem
UDDI no atende as necessidades
Ferramentas de gerao automtica atrapalham
No 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, WSAtomicTransaction, WSBPEL (Business Process Execution Language), WS-CAF (WS
Composite Application Framework ), WS-CF (WS Coordination Framework), WSChoreography , WS-CDL (Web Services Choreography Description Language), WSCoordination, 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, WSMetadataExchange (Web Services Metadata Exchange), WS-MessageDelivery, WSNotification, 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, XMLEncryption, 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, 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

Você também pode gostar