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                        Provedor de
 do serviço                         serviços




                         Prof. Adriano Teixeira de Souza
   Web Service Description Language

   Esforço da W3C

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
                                                                           16
   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


                                Prof. Adriano Teixeira de Souza
                                                                  17
   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
boa arquitectura
              DNA




                 Aplicação Central Compras




Data Layer              Business             Presentation
                         Layer                   Layer

                                                                Interface da aplicação
                                                                dá acesso aos dados
                                                                aplicacionais



                                      Prof. Adriano Teixeira de Souza
Interface desacoplado
                                                                    da lógica de
                                                             processamento dos
                                                                          dados
                                troca de mensagens
 boa arquitectura
    3-tier service

          Serviço Central Compras                                                         UI




Data Layer           Business     Service                                          Presentation
                      Layer       Façade                                               Layer

 Dados e Lógica Negócio
  encapsulados por uma                                                             Web Service Standards
    Web Service Façade                                                             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

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

  • 1.
    Comunicação Distribuída –Web Services Prof. Adriano Teixeira de Souza
  • 2.
    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
  • 3.
    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
  • 4.
    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
  • 5.
    Registro UDDI Consumidor Provedor de do serviço serviços Prof. Adriano Teixeira de Souza
  • 6.
    Web Service Description Language  Esforço da W3C 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 16
  • 7.
    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 Prof. Adriano Teixeira de Souza 17
  • 8.
    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
  • 9.
    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
  • 10.
    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
  • 11.
  • 12.
  • 13.
    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
  • 14.
    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....
  • 15.
    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
  • 16.
    boa arquitectura DNA Aplicação Central Compras Data Layer Business Presentation Layer Layer Interface da aplicação dá acesso aos dados aplicacionais Prof. Adriano Teixeira de Souza
  • 17.
    Interface desacoplado da lógica de processamento dos dados troca de mensagens boa arquitectura 3-tier service Serviço Central Compras UI Data Layer Business Service Presentation Layer Façade Layer Dados e Lógica Negócio encapsulados por uma Web Service Standards Web Service Façade permitem ligações cross-platform Prof. Adriano Teixeira de Souza
  • 18.
    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
  • 19.
    @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
  • 20.
    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
  • 21.
    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
  • 22.
    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
  • 23.
    Fornece a mesma funcionalidade pra valores de retorno que @WebParam oferece para parâmetros de métodos Prof. Adriano Teixeira de Souza
  • 24.
    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
  • 25.
    package com.titan.webservice; import javax.jws.WebService; @WebService publicinterface 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