You are on page 1of 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


Interface desacoplado da lgica de processamento dos dados

troca de mensagens boa arquitectura 3-tier service

Servio Central Compras

UI

Data Layer

Business Layer

Service Faade

Presentation Layer

Dados e Lgica Negcio encapsulados por uma Web Service Faade

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 / XML Message 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
add(10, 5)

Web Service Code


(e.g. Calculator.java)

SOAP Request

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 serverside 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/
http://ws.apache.org/axis/

Apache 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-*)


Connected Applications

Management

Business Process

Messaging Specifications SOAP WS-Addressing MTOM (Attachments) WS-Eventing 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

Security

Reliability

Transactions

Messaging XML

Metadata

HTTP

TCP

SMTP

Transaction Specifications WS-Coordination WS-AtomicTransaction WS-BusinessActivity Metadata Specifications

Web Services Security Roadmap


SecureConversation Policy
Hoje

Federation Trust Security SOAP Foundation

Authorization Privacy

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

You might also like