25
Comunicação Distribuída – Web Services Prof. Adriano Teixeira de Souza

Sistemas Distribuídos - Comunicação Distribuída – Web Services

Embed Size (px)

Citation preview

Page 1: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Comunicação Distribuída – Web Services

Prof. Adriano Teixeira de Souza

Page 2: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Estratégias diferentes que permitem a comunicação entre aplicações distribuídas.

Tipos distintos de comunicação em um sistema distribuído:

◦ Sockets

◦ RMI - Remote Method Invocation

◦ CORBA – Commom Object Request Broker Architecture

◦ EJB – Enterprise Java Bean

◦ Web Services

Prof. Adriano Teixeira de Souza

Page 3: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Um Web Service é:

Qualquer serviço que é disponibilizado através da web.

Qualquer serviço que possibilita duas aplicações de computador trocarem dados.

Principalmente, mas não exclusivamente baseado em: ◦ XML para codificação de dados

◦ HTTP para transporte de dados

• Um documento XML transmitido remotamente e mapeado para um programa executável.

Prof. Adriano Teixeira de Souza

Page 4: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Comunicação entre aplicações de WS usam 4 camadas que empacotam a requisição e a resposta entre o servidor e o cliente.

◦ XML – possibilita estabelecer objetos, métodos, parâmetros, dados e tipos de dados

◦ SOAP – protocolo que estabelece a comunicação entre os ambientes

◦ WSDL – descreve o serviço (XML)

◦ UDDI – representa service broker. Contém as descrições dos WS.

Prof. Adriano Teixeira de Souza

Page 5: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Registro UDDI

Consumidor do serviço

Provedor de serviços

Prof. Adriano Teixeira de Souza

Page 6: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Web Service Description Language

Esforço da W3C

16

Descreve interface para consumir

um Serviço Web - Interface: operações (entrada e saída)

- Acesso (ligação de protocolo)

- Ponto final (localização do Serviço)

Prof. Adriano Teixeira de Souza

Page 7: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Marcação XML para descrever serviços disponíveis em uma

rede

Descreve a interface, protocolos de ligação e entrega de

serviço

Fornece uma maneira uniforme de descrever serviços

abstratos UDDI

Serviços Web são pontos finais de rede que operam em

mensagens

17 Prof. Adriano Teixeira de Souza

Page 8: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Universal Description, Discovery, and Integration Protocol

Diretório independente de plataforma de descrição para Serviços Web

Método padrão para publicar e descobrir Serviços Web e fornecedores

Suporta vários tipos de descrição de serviços, não limitados à WSDL

Registros UDDI podem ser gerados a partir de descrições WSDL

Prof. Adriano Teixeira de Souza

Page 9: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Simple Object Access Protocol

Recomendação W3C

Transporte de dados XML: - emissor / receptor

- ligação de protocolo

- aspectos de comunicação

- conteúdo

Prof. Adriano Teixeira de Souza

Page 10: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Protocolo para troca de informações estruturadas em uma plataforma descentralizada e distribuída, utilizando tecnologias baseadas em XML

Sua especificação define um framework que provê maneiras para se construir mensagens que podem trafegar através de diversos protocolos ◦ Foi especificado de forma a ser independente de qualquer modelo de

programação ou outra implementação específica

As mensagens SOAP são documentos XML que aderem a uma especificação fornecida pelo órgão W3C

Prof. Adriano Teixeira de Souza

Page 11: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Prof. Adriano Teixeira de Souza

Page 12: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Prof. Adriano Teixeira de Souza

Page 13: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Dois fatores chave: ◦ ubiqüidade ◦ facilidade de uso

Interoperável: ◦ Neutro em relação a SO e linguagem ◦ Integração Java & .NET : simples e barata

Todo mundo dá suporte ou irá dar a Serviços Web: ◦ Necessário dar suporte a Serviços Web para facilitar

Integração

Não-invasivos(impactante): ◦ Baseados em protocolos ubiqüos: HTTP/SMTP ◦ Complementam tecnologias já existentes

Prof. Adriano Teixeira de Souza

Page 14: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Integrar sistemas heterogêneos dentro de empresas;

Integrar sistemas remotos através da Internet;

Integrar diferentes plataformas de hardware, software e S.O.;

Fornecer serviços a terceiros.

Obs.: Várias empresas e instituições vêm adotando esta tecnologia como infra-estrutura para expor suas aplicações, aumentando assim, a demanda pelo seu desempenho....

Page 15: Sistemas Distribuídos - Comunicação Distribuída – Web Services

INTEGRAÇÃO ◦ Interna:

Dados como nome, endereço, telefone, matrícula, etc, todas as áreas da empresa utilizam. Assim, estes dados podem ser disponibilizados (em um formato comum) para que sistemas desenvolvidos por outras áreas possam utilizar em seus aplicativos específicos.

◦ Externa: Gestão da cadeia de suprimentos. Esta integração é

baseada na interação que existe entre várias empresas durante os diversos processos de fabricação e a logística.

Prof. Adriano Teixeira de Souza

Page 16: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Data Layer Presentation

Layer

Business

Layer

Aplicação Central Compras

boa arquitectura

DNA

Interface da aplicação

dá acesso aos dados

aplicacionais

Prof. Adriano Teixeira de Souza

Page 17: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Data Layer Presentation

Layer

Business

Layer

Serviço Central Compras

Service

Faç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ções

cross-platform

Prof. Adriano Teixeira de Souza

Page 18: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Facilitar o uso da API JAX-RPC e do modelo de implantação

Anotações baseados em JSR-181

Exemplo Básico: ◦ Anotações:

@WebService

@WebMethod

@WebParam

@WebResult

Prof. Adriano Teixeira de Souza

Page 19: Sistemas Distribuídos - Comunicação Distribuída – Web Services

@WebService(name = "TravelAgent", serviceName="TravelAgentService")

@Stateless

public class TravelAgentBean implements TravelAgentRemote

{

@PersistenceContext(unitName="titan")

private EntityManager manager;

@WebMethod

public void createCabin( @WebParam(name = "Cabin") Cabin cabin )

{

manager.persist(cabin);

}

@WebMethod

@WebResult(name = "Cabin")

public Cabin findCabin(@WebParam(name = "ID") int pKey )

{

return manager.find(Cabin.class, pKey);

}

}

Prof. Adriano Teixeira de Souza

Page 20: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Deve ser colocada na classe de implementação de bean de sessão sem informação de estado

@WebService(name,wsdlLocation,endpointInterface, portName)

◦ name: nome do serviço Web quando mapeado para WSDL. Assume como padrão o nome da classe Java ou interface.

◦ wsdlLocation: define a url do documento wsdl.

◦ endpointInterface: externaliza o contrato do serviço Web na forma de uma interface Web.

◦ portName: porta WSDL utilizada.

Prof. Adriano Teixeira de Souza

Page 21: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Métodos anotados com @WebMethod estarão disponíveis para o serviço Web.

Se a classe for anotada com @WebService e nenhum método com @WebMethod, todos os métodos estarão disponíveis no Web Service.

Boa prática de projeto para reduzir dependências entre módulos.

Atributo operationName é utilizado para definir a operação WSDL que o método anotado implementa. Se não especificado, o nome do método é utilizado.

Prof. Adriano Teixeira de Souza

Page 22: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Permite controlar o WSLD gerado para um método Java sinalizado com @WebMethod

Se o estilo for RPC/LITERAL(wsdl:part), o atributo name() configurará o nome wsdl:part

Exemplo (produz um wsdl): ◦ @WebMethod(OperationName = “CheckStatus”)

◦ Public int checkStatus(

◦ @WebParam(name = “ReservationID”) String reservationID

◦ @WebParam(name = “CustomerID”, mode = WebParam.Mode.OUT) javax.ws.Holder<Integer> customerID){

customerID.value = getCustomerID(reservationID);

Return status;

}

Prof. Adriano Teixeira de Souza

Page 23: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Fornece a mesma funcionalidade pra valores de retorno que @WebParam oferece para parâmetros de métodos

Prof. Adriano Teixeira de Souza

Page 24: Sistemas Distribuídos - Comunicação Distribuída – Web Services

Utilizar o atributo endpointInterface() da anotação @javax.jws.WebService.

O contrato dos serviços Web podem ser mantidos em uma interface Java externa.

Com essa metodologia, somente a anotação @WebService é requerida, as outras são opcionais.

Ao invés de manter tudo dentro da implementação EJB, todos os métodos na interface são expostos no serviço Web.

Prof. Adriano Teixeira de Souza

Page 25: Sistemas Distribuídos - Comunicação Distribuída – Web Services

package com.titan.webservice;

import javax.jws.WebService;

@WebService

public interface TravelAgentEndpoint{

public String makeReservation(…)

}

Bean de implementação que referencia a interface endpoint

Import javax.jws.WebService;

@WebService(endpointInterface = “com.titan.webservice.TravelAgentEndpoint”)

public class TravelAgentBean implements TravelAgentEndpoint {

// (implementação da interface opcional)

Prof. Adriano Teixeira de Souza