Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP...

70
Web Services SOAP Introdução 1

Transcript of Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP...

Page 1: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Web Services SOAP

Introdução

1

Page 2: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Cenários Problemáticos

Soluções para aplicações corporativas avançadas

– Cenário 1: Portal de Turismo

– Cenário 2: Compra Automática

– Cenário 3: Supply Chain Management

– Cenário 4: Pesquisa Google via Programa

2

Page 3: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Cenário 1: Portal de Turismo

Implementar um portal realmente automático em que: – O cliente lista seus desejos via HTML – O portal

• pesquisa alternativas

• escolhe as melhores

• faz todas as reservas

• fatura o cartão de crédito do cliente

• efetua todos os pagamentos

• ... automaticamente, sem intervenção humana

Ou seja, queremos que programas naveguem na Web, não só humanos

3

Page 4: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Cenário 2: Compra automática

Implementar uma aplicação para um distribuidor regional de remédios que:

– Automaticamente detecte estoque baixo

– Procure o melhor lugar no mundo para comprar os produtos

• Preço, prazo de entrega, etc.

– Emita a ordem de compra eletronicamente

4

Page 5: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Cenário 3: Supply Chain

Management

Implementar aplicações de SCM que integrem sistemas de várias empresas (fornecedores, parceiros, clientes, ...)

5

Page 6: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Cenário 4: Pesquisa Google via

Programa

Escrever um programa que recupere as primeiras 10 ocorrências de “web services” retornadas pelo Google

6

Page 7: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Características comuns aos

cenários Todos são sistemas distribuídos

Todos funcionam na Internet

Vários envolvem achar (navegar) o que se quer antes de usar

Todos envolvem domínios administrativos diferentes (empresas diferentes)

– Não temos controle sobre a plataforma, linguagem, etc. do outro lado

– O outro lado é essencialmente um sistema legado no qual não podemos mexer

7

Page 8: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Problemas técnicos resultantes

1. Como trocar informação em ambiente heterogêneo para que ambos os lados entendam?

2. Como acessar a funcionalidade remota?

3. Como achar o “outro lado”?

4. Como driblar firewalls na comunicação?

8

Page 9: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Uma Solução – Web Services

1. Como trocar informação em ambiente heterogêneo para que ambos os lados entendam? • Usar XML para toda a comunicação

• Usar SOAP fazer RPC

2. Como saber que “métodos” podem ser chamados e com que parâmetros? – Usar uma arquitetura orientada a serviços – Descrever o serviço remoto usando WSDL – Definir ontologias

3. Como achar o “outro lado”? – Usar UDDI para localizar serviços

4. Como driblar firewalls na comunicação? • Usar binding de SOAP para HTTP

9

Modelo de dados que

representa um

conjunto de conceitos

de um domínio e os

relacionamentos

entre estes.

Usada para realizar

inferência sobre os

objetos do domínio.

Page 10: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Uma imagem vale 1000 palavras

10

Page 11: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Vamos descrever melhor a

solução ...

11

Page 12: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Usar uma arquitetura orientada a

serviços Serviço oferece uma API na Internet

12

Page 13: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Usar XML para toda a

comunicação Extended Markup Language (XML) Oferece um formato ASCII para trocar qualquer tipo de

informação estruturada Usa o “estilo” HTML de markup com tags

– <pessoa nome=”João”> <frutasFavoritas> <fruta>Manga</fruta> <fruta>Maçã</fruta> <fruta>Uva</fruta> </frutasFavoritas> </pessoa>

Os tags podem ser definidos para criar uma “Aplicação XML” ou “Linguagem XML”

13

Page 14: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Usar SOAP fazer RPC

SOAP é uma forma de fazer Remote Procedure Call (RPC) usando documentos XML

14

Page 15: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Descrever o serviço remoto

usando WSDL

WSDL = Web Services Description Language

Pronunciado “wisdle”

É uma linguagem XML que contém informação sobre a interface, a semântica, e outros detalhes de chamadas a um Web Service

15

Page 16: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Descrição WSDL inclui

Descrição/formato de mensagens que podem ser passadas – Elementos <types>, <message>

Semântica da passagem de mensagens (Request-only, request-response, response-only) – Dentro do elemento <portType>

Uma codificação usando um transporte particular – Elemento <binding>

O endpoint do serviço (uma URL) – Dentro do elemento <service>

Veremos um exemplo logo

16

Page 17: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Definir ontologias

Precisamos saber o que as coisas significam

Exemplo: como mandar uma ordem de serviço se não sei o que cada campo deve conter?

Várias organizações definem e padronizam ontologias – ebXML

– Oasis

17

Page 18: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Usar UDDI para localizar serviços

UDDI = Universal Description, Discovery, and Integration

Permite cadastrar serviços e localizá-los

Não é necessário usar UDDI se o cliente já tiver o documento WSDL

– Não usaremos UDDI no exemplo que segue

18

Page 19: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Usar binding de SOAP para HTTP

O binding sobre HTTP, SMTP, etc. permite driblar firewalls com mais facilidade

Qualquer outro protocolo de transporte pode ser usado

19

Page 20: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Finalmente ... O que é um Web Service?

Um Web Service é um ponto de acesso a funcionalidade que pode ser

– Localizado dinamicamente

– Ter sua interface descoberta automaticamente, porque o serviço sabe se descrever

– Ser chamado na Web

20

Page 21: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

21

Page 22: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Situações de uso de SOAP

Processamento e chamadas assíncronos:

– aplicação precisa de um nível garantido de confiabilidade e segurança para a troca de mensagens;

Contratos formais:

– ambos os lados (fornecedor e consumidor) têm que concordar com o formato de intercambio de dados, onde SOAP fornece especificações rígidas para esses tipo de interação;

Operações stateful:

– a aplicação precisa de informação contextual e gerenciamento de estado com coordenação e segurança

22

Page 23: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Web Service SOAP

Page 24: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Tecnologias Relacionadas

Web Services

SOAP (Simple Object Access Protocol)

HTTP (HyperText Markup Language)

UDDI (Universal Description, Discovery and Integration)

XML (eXtensible Markup Language)

XSD (XML Schema Documents)

Page 25: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

SOAP

Protocolo elaborado para facilitar a chamada remota de funções via Internet, permitindo que dois programas se comuniquem de uma maneira tecnicamente muito semelhante à invocação de páginas Web.

25

Page 26: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

SOAP

Vantagens sobre outras maneiras de chamar funções remotamente como DCOM, CORBA ou diretamente no TCP/IP:

– simples de implementar, testar e usar

– padrão da indústria

– Usa mesmos padrões da Web :

• comunicação via HTTP;

• mesmos protocolos de autenticação e encriptação;

• manutenção de estado da mesma forma;

• normalmente implementado pelo próprio servidor Web.

26

Page 27: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

SOAP

Vantagens sobre outras maneiras de chamar funções remotamente como DCOM, CORBA ou diretamente no TCP/IP:

– Atravessa “firewalls” e roteadores, que “pensam” que é uma comunicação HTTP.

– Tanto os dados como as funções são descritas em XML, o que torna o protocolo não apenas fácil de usar como também muito robusto.

– É independente do sistema operacional e CPU.

– Pode ser usado tanto de forma anônima como com autenticação (nome/senha).

27

Page 28: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Pedidos SOAP

Os pedidos SOAP podem ser feitos em três padrões: GET, POST e SOAP.

– GET e POST idênticos aos pedidos feitos por navegadores Internet.

– SOAP padrão semelhante ao POST, mas com pedidos em XML que permitem recursos mais sofisticados como passar estruturas e arrays.

As respostas são sempre em XML.

O XML descreve perfeitamente os dados em tempo de execução e evita problemas causados por mudanças nas funções, já que os objetos chamados têm a possibilidade de sempre validar os argumentos das funções, tornando o protocolo muito robusto.

28

Page 29: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

WSDL

Web Services Definition Language

29

Page 30: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

WSDL

Uma definição:

– A WSDL é uma especificação que permite descrever Web Services segundo um formato XML.

Page 31: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Descrição dos Serviços

Através da descrição do Web Services o provedor de serviços publica as especificações necessárias para o cliente invocar um serviço.

Page 32: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Independência de plataforma

O cliente não precisa saber qual a linguagem do programação ou plataforma de execução em que o provedor de serviços está baseado.

A descrição do serviço em conjunto com a infra-estrutura SOAP adjacente encapsula detalhes tanto no lado do cliente quanto no lado do provedor.

Page 33: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Em suma...

Um documento WSDL é um documento XML que descreve Web Services como um conjunto de pontos de serviço (endpoints) que operam baseados em trocas de mensagens.

As operações e mensagens relativas a um serviço são descritas de forma abstrata e em seguida ligados a protocolos de rede e formatos de mensagens concretos como o objetivo de definir um ponto de serviço .

Page 34: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

WSDL é extensível

WSDL é uma linguagem extensível e permite a descrição de pontos de serviço e suas mensagens independentemente de que formato de mensagens ou protocolo de rede é utilizado na comunicação.

Page 35: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Linguagem para definição de web

service - WSDL

Descreve perfeitamente os objetos e métodos disponíveis, através de páginas XML acessíveis através da Web.

Quem publicar um serviço, cria também estas páginas.

Quem quiser chamar o serviço, pode usar estas páginas como “documentação” de chamada e também usadas antes de chamar as funções para verificar se alguma coisa mudou.

35

Page 36: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

WSDL – Web Services Definition Language

A camada de integração introduzida pela estrutura de web services estabelece um padrão, reconhecido e com interface programática suportada.

WSDL permite a comunicação entre essas camadas ao fornecer descrições padronizadas.

36

Page 37: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

WSDL – definiçao de serviços

Uma definição de serviço, tal como é expressa pelo construtor definitions

37

Page 38: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Arquitetura WS

Camadas

– Descoberta

– Publicação (UDDI /direta)

– Descrição dos serviços (WSDL)

– Troca de Mensagens baseadas em XML (SOAP)

– Rede (HTTP, SMTP, FTP)

Page 39: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Interface e Implementação

O uso de WSDL na arquitetura de Web Services é em geral dividido em duas partes:

– interface do serviço

– implementação do serviço.

Cada parte pode ser definida de maneira independente e conseqüentemente reutilizada por outras aplicações.

Page 40: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Interface de Serviço

Especificação de interface de serviço é uma descrição de serviço reutilizável que pode ser instanciada e implementada por diferentes implementações de serviços.

Semelhante a IDL (CORBA).

Page 41: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Elementos da Interface de Serviço

Tipos (types) – Definem os tipos de dados que são utilizados para

descrever as mensagens. Para melhor interoperabilidade e independência de plataforma indica-se o uso de XSD (XML Schema Documents)

<types>

<schema targetNamespace="http://example.com/stockquote.xsd“

xmlns="http://www.w3.org/2000/10/XMLSchema">

<element name="TradePriceRequest">

<complexType>

<all>

<element name="tickerSymbol" type="string"/>

</all>

</complexType>

</element>

<element name="TradePrice">

...

</element>

</schema>

</types>

Page 42: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Mensagens (message)

– Representam uma definição abstrata dos dados que serão transmitidos. Uma mensagem é composta por diferentes partes lógicas que estão associadas com uma definição contida em um sistema de tipos.

<message name=“itemInformation”>

<part name=“theElement” element=“aliarForItem” />

</message>

Elementos da Interface de Serviço

Page 43: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Tipos de portas (portType)

– São conjuntos de operações abstratas, cada uma contendo mensagens de entrada e saída.

.... >

<portType name="StockQuotePortType">

<operation name="GetLastTradePrice">

<input message="tns:GetLastTradePriceInput"/>

<output message="tns:GetLastTradePriceOutput"/>

</operation>

</portType> ...

Elementos da Interface de Serviço

Page 44: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Operações (operation)

– Definição abstrata de uma ação que um serviço pode executar

.... >

<portType name="StockQuotePortType">

<operation name="GetLastTradePrice">

<input message="tns:GetLastTradePriceInput"/>

<output message="tns:GetLastTradePriceOutput"/>

</operation>

</portType> ...

Elementos da Interface de Serviço

Page 45: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Ligações (binding) – Especificam protocolos concretos além de especificações

de formatação de dados para as operações e mensagens definidas em um tipo de porta particular.

<binding name="StockQuoteSoapBinding“

type="tns:StockQuotePortType">

<soap:binding style="document“

transport="http://schemas.xmlsoap.org/soap/http"/>

<operation name="GetLastTradePrice">

<soap:operation

soapAction="http://example.com/GetLastTradePrice"/>

<input>

<soap:body use="literal"/>

</input>

<output>

<soap:body use="literal"/>

</output>

</operation>

</binding>

Elementos da Interface de Serviço

Page 46: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Implementação do Serviço

A implementação de serviço é um documento WSDL que descreve como uma interface particular é implementada por um determinado provedor de serviços. Os elementos que fazem parte da implementação do serviço são ports e services.

Page 47: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Implementação do Serviço

Porta (port)

– Especifica um endereço para uma ligação, definindo então um endpoint único.

<port name="StockQuotePort“

binding="tns:StockQuoteBinding">

<soap:address

location="http://example.com/stockquote"/>

</port>

Page 48: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Implementação do Serviço

Serviço (service)

– Modela um Web Service agregando um conjunto de portas relacionados entre si.

<wsdl:definitions .... >

<wsdl:service name="nmtoken">

<wsdl:port .... />

</wsdl:service>

</wsdl:definitions>

Page 49: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

WSDL

As definições de interface e implementação de serviços podem fazer parte de um mesmo documento WSDL .

Um documento WSDL contém elementos que possuem significado para um Web Service.

Page 50: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Elementos da WSDL para seu

XSD

definitions documentation message portType input output fault operation service binding port

Page 51: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Estrutura de um Documento WSDL

• Um documento WSDL é um conjunto de

definições. Há um elemento “definitions”

na raiz e outras definições no interior

Page 52: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

This example uses a fixed XML format instead of the SOAP encoding

Example 1 SOAP 1.1 Request/Response via HTTP [2]

<?xml version="1.0"?>

<definitions name="StockQuote"

targetNamespace="http://example.com/stockquote.wsdl“

xmlns:tns="http://example.com/stockquote.wsdl“

xmlns:xsd1="http://example.com/stockquote.xsd“

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/“

xmlns="http://schemas.xmlsoap.org/wsdl/">

<types>

<schema targetNamespace="http://example.com/stockquote.xsd“

xmlns="http://www.w3.org/2000/10/XMLSchema">

<element name="TradePriceRequest">

<complexType>

<all>

<element name="tickerSymbol" type="string"/>

</all>

</complexType>

</element>

<element name="TradePrice">

Definitions:

Define a raiz do

documento WSDL

types:

Define os tipos de dados

que serão utilizados para

trocar mensagens

types:

Indica-se

o padrão

XSD

Page 53: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Cont.

<element name="TradePrice">

<complexType>

<all>

<element name="price" type="float"/>

</all>

</complexType>

</element>

</schema>

</types>

<message name="GetLastTradePriceInput">

<part name="body" element="xsd1:TradePriceRequest"/>

</message>

<message name="GetLastTradePriceOutput">

<part name="body" element="xsd1:TradePrice"/>

</message>

<portType name="StockQuotePortType">

<operation name="GetLastTradePrice">

<input message="tns:GetLastTradePriceInput"/>

<fault name= “..... />

<output message="tns:GetLastTradePriceOutput"/>

</operation>

</portType>

message:

Definição abstrata

dos dados enviados

e recebidos

portType:

Define um conjunto de

operações disponíveis em

uma determinada porta operation:

Nomeia as operações de

entrada e saída e ainda

podem descrever erros

(fault)

fault:

Leyout de retorno

de qualquer falha

Page 54: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Cont.

<binding name="StockQuoteSoapBinding“

type="tns:StockQuotePortType">

<soap:binding style="document“

transport="http://schemas.xmlsoap.org/soap/http"/>

<operation name="GetLastTradePrice">

<soap:operation

soapAction="http://example.com/GetLastTradePrice"/>

<input>

<soap:body use="literal"/>

</input>

<output>

<soap:body use="literal"/>

</output>

</operation>

</binding>

<service name="StockQuoteService">

<documentation>My first service

</documentation>

<port name="StockQuotePort" binding="tns:StockQuoteBinding">

<soap:address location="http://example.com/stockquote"/>

</port>

</service>

</definitions>

binding:

Especifica o protocolo e o

formato de dados para

operações e mensagens

definidas por uma portType Input/output:

Descreve os elementos que

uma operação usa como

parâmetros de entrada e

saída

service:

Modela um Web Services

agregando um conjunto de

portas relacionadas

documentation:

Textos ou elementos

adicionais, informativos,

utilizados para documentação

port:

Especifica o

endereço de um

binding

Page 55: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Referências

[1] Seely, Scott. SOAP: Cross Platform, Web Services Development, Using XML. New York: Prentice Hall, 2002.

[2] W3C. Web Services Description Language (WSDL) 1.1, [online], 05/06/2002, http://www.w3.org/tr/2001/NOTE=wsdl-20010315.

Page 56: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Criando um Web Service SOAP

56

Page 57: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Criando Web Services em SOAP

Serviços Web são definidos por classes.

Um Web Service pode oferecer várias operações, cada uma representada por um método de classe.

Uma prática importante: dividir a interface de um serviço da sua implementação.

– interface de um serviço: SEI (Service Endpoint Interface) e

– a implementação: SIB (Service Implementation Bean).

Page 58: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Criando o Web Service ALO

Crie a interface do serviço

@Webservice: avisa ao compilador Java que o arquivo atual

corresponde à definição SEI de um serviço Web

@WebMethod indica que um determinado método corresponde a uma operação de serviço e assim pode ser invocado por um cliente

@SOAPBinding indica que o serviço utilizará a abordagem SOAP

@WebService

@SOAPBinding(style = SOAPBinding.Style.RPC)

public interface Alo {

@WebMethod public String alo (@WebParam(name = "nome") String

txt);

}

Page 59: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Criando a Implementação do Serviço

ALO Criar a implementação da interface: a SEI onde serão

implementados os métodos definidos anteriormente

@WebService(endpointInterface = "alo.Alo")

public class AloServer implements Alo{

public String alo (@WebParam(name = "nome") String txt) {

return "Olá " + txt + " !";

}

}

Page 60: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Publicando o Serviço

Endpoint : permite publicar um serviço em um servidor. Parâmetros:

– o endereço do servidor e

– a instância do SIB do serviço a ser publicado.

– O serviço é publicado na porta 9875.

public class AloPublish {

public static void main(String[] args) {

Endpoint.publish("http://localhost:9875/alo", new AloServer());

}

}

Page 61: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Usando o serviço

indicando o WSDL onde o serviço poderá ser encontrado

public class AloClient {

public static void main(String args[]) throws Exception {

URL url = new URL("http://127.0.0.1:9875/alo?wsdl");

QName qname1 = new QName("http://alo/", "AloServerService");

Service ws1 = Service.create(url, qname1);

Alo cS = ws1.getPort(Alo.class);

System.out.println("Resultado " + cS.alo("Macacada"));

}

}

Page 62: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Usando o serviço

Nome qualificado em XML para QName.

Indica uma URI (namespace) e o nome do serviço.

– Namespace: fornecido pela WSDL do serviço, e

– Nome local: classe SIB acrescida da palavra “Service”. O nome local aparece na última seção do documento WSDL (seção service).

public class AloClient {

public static void main(String args[]) throws Exception {

URL url = new URL("http://127.0.0.1:9875/alo?wsdl");

QName qname1 = new QName("http://alo/", "AloServerService");

Service ws1 = Service.create(url, qname1);

Alo cS = ws1.getPort(Alo.class);

System.out.println("Resultado " + cS.alo("Macacada"));

}

}

Page 63: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Usando o serviço

retorna uma referência a um objeto que pode invocar as operações oferecidas pelo serviço

public class AloClient {

public static void main(String args[]) throws Exception {

URL url = new URL("http://127.0.0.1:9875/alo?wsdl");

QName qname1 = new QName("http://alo/", "AloServerService");

Service ws1 = Service.create(url, qname1);

Alo cS = ws1.getPort(Alo.class);

System.out.println("Resultado " + cS.alo("Macacada"));

}

}

Page 64: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Usando o serviço

Acesso a interface de ponto final (endpoint)

– tipo SEI do serviço, sendo capaz de acessar seus métodos.

O cliente poderia ter sido implementado em qualquer linguagem de programação como C, C++, PERL ....

public class AloClient {

public static void main(String args[]) throws Exception {

URL url = new URL("http://127.0.0.1:9875/alo?wsdl");

QName qname1 = new QName("http://alo/", "AloServerService");

Service ws1 = Service.create(url, qname1);

Alo cS = ws1.getPort(Alo.class);

System.out.println("Resultado " + cS.alo("Macacada"));

}

}

Page 65: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

65

Page 66: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Exercício: Calculadora

www.linhadecodigo.com.br

Desenvolvendo e usando web services em java

66

Page 67: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Exemplo: Calculadora @WebService

@SOAPBinding(style = Style.RPC)

public interface CalculadoraS {

@WebMethod

float soma(float num1, float num2);

@WebMethod

float subtracao(float num1, float num2);

@WebMethod

float multiplicacao(float num1, float num2);

@WebMethod

float divisao(float num1, float num2);

}

Page 68: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Exemplo: Calculadora @WebService(endpointInterface = "calc.CalculadoraS")

public class CalculadoraSImpl implements CalculadoraS {

public float soma(float num1, float num2) {

return num1 + num2;

}

public float subtracao(float num1, float num2) {

return num1 - num2;

}

public float multiplicacao(float num1, float num2) {

return num1 * num2;

}

public float divisao(float num1, float num2) {

return num1 / num2;

}

}

Page 69: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Exemplo: Calculadora public class CalculadoraSPublish {

public static void main(String[] args) {

Endpoint.publish("http://localhost:9876/calc",

new CalculadoraSImpl());

}

}

Page 70: Web Services SOAP - FACOM › ~bacala › SOA › SOA05- Web Services SOAP.pdf · Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI (Universal

Exemplo: Calculadora class CalculadoraClient {

public static void main(String args[]) throws Exception {

URL url = new URL("http://127.0.0.1:9876/calc?wsdl");

QName qname = new

QName("http://calc/","CalculadoraSImplService");

Service ws = Service.create(url, qname);

CalculadoraS calc = ws.getPort(CalculadoraS.class);

System.out.println("Soma (5+1): " + calc.soma(5,1));

System.out.println("Subtracao (5-1): " + calc.subtracao(5,1));

System.out.println("Multiplicacao (5*1): " + calc.multiplicacao(5,1));

System.out.println("Divisao (5/1): " + calc.divisao(5,1));

}

}