sistemas distribuídos - comunicação distribuída – web services
TRANSCRIPT
Comunicação Distribuída – Web Services
Prof. Adriano Teixeira de Souza
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
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
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
Registro UDDI
Consumidor do serviço
Provedor de serviços
Prof. Adriano Teixeira de Souza
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
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
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
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
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
Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
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
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....
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
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
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
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
@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
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
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
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
Fornece a mesma funcionalidade pra valores de retorno que @WebParam oferece para parâmetros de métodos
Prof. Adriano Teixeira de Souza
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
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