1. WDSL/UDDI
Universidade Federal do Pará
Instituto de Ciências Exatas e Naturais
Faculdade de Computação
Disciplina: Sistemas Distribuídos
Equipe:
Alexandre Monassa
Anderson Bandeira
Raphael Brito
3. Introdução a Web Services
Web Service é uma solução utilizada na
integração de sistemas e na comunicação entre
aplicações diferentes. Os Web Services são
componentes que permitem às aplicações
enviar e receber dados em formato XML. Cada
aplicação pode ter a sua própria "linguagem",
que é traduzida para uma linguagem universal,
o formato XML.
(Wikipédia)
4. Introdução a Web Services
●Descreve uma coleção de operacões;
●São acessados Remotamente;
●Usa padrão de mensagens XML;
●Ele descreve todos os detalhes para interagir
com o serviço:
○ Mensagens formatadas;
○ Protocolo de transporte e local;
○ Independência de hardware ou software;
○ Independência de linguagens de programação;
5. Lingaguem Universal,
de Marcação
WSDL
●Web Services Definition Language;
●Baseado na linguagem XML para descrever uma
interface de serviço web;
●Usa também SOAP para prover Web Services na
internet;
●Atualmente está na versão 2.0;
●Apresentaremos somente a versão 2.0;
●Responde a todas as requisições HTTP (GET e
POST);
●O WSDL define os serviços como uma coleção de
nós (endpoints) de rede capazes de trocar
mensagens;
Protocolo de troca de
informações estruturadas
em um Web Service
6. Introdução a Web Services
●Outras propriedades que os Web Services podem
ter:
●Um web service pode ser auto-descrito. Seu
serviço inclui documentação capaz de ser lida por
humanos e facilmente integravel a outros
serviços. A Gramática XML pode ser usada para
identificar todos os métodos públicos, argumentos
de métodos, e valores de retorno;
●Um web service pode ser descoberto. Quanto um
Web Service é criado ele pode ser publicado, e
mecanismos de pesquisa podem localizá-lo e
descobrir sua interface pública.
7. Exemplo de Web Service na
internet
●A Amazon.com possui um web Service com
outros parceiros como empresas de entrega;
●Um cliente que comprou um item sabe o
Status do produto (se já saiu ou está em que
parte do transporte);
●Assim quando um parceiro publica uma
informação atualizada contendo a
mensagem “Em transporte, cidade São
Paulo, tempo até Belém 2 dias”, o cliente
pode receber esta informação diretamente
do Amazon.com;
8. WSDL
●Defini mensagens e portas abstratas;
●Implementa essas mensagens e portas;
●A definição abstrata de mensagens e portas estão
separadas de suas implementações (semelhante
ao IDL do Corba);
●Uma porta é um endereço de rede com um nome
qualificador reusável pelo Web Service;
●Uma coleçao de portas define o serviço;
9. WSDL
●Mensagens são descrições abstratas dos
dados que serão trocados;
●O reuso de portas é feito pelas
especificações de dados e os protocolos
concretos;
●As portas e as mensagens são ligadas a
um determinado protocolo e formato de
mensagens;
●Dessa forma o WSDL descreve a interface
pública do Web Service;
10. WSDL
●Assim um Cliente que se conecta ao Web
Service poderá enxergar as operações
que estão disponíveis no servidor;
●Os tipos de dados no WSDL estão no
formato XML;
●O Cliente faz as chamadas para as
operações através do SOAP;
13. Elementos do WSDL
espaço de nomes
de destino
estilo de
documento
abstrato
estilo
requisição-
resposta como ond
e
types message interface bindings services
definitions
concreto
(Coulouris, 2007)
14. WSDL
●O WSDL Contém os seguintes elementos
de marcação:
○ Type
○ portType;
○ Message;
○ Operation;
○ Bind;
○ Service;
○ Port;
15. Elementos do WSDL
● Types: Descreve dados que são usados para descrever
mensagens;
<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>
○ Port: Endereço ou ponto de conexão do web Service
16. ● Message: Uma mensagem corresponde a uma operação. A
mensagem contém a informação necessária para a performance da
operação.
<message name=“itemInformation”>
<part name=“theElement” element=“aliarForItem” />
</message>
● portType:Define um webService, a operação que será utilizada e as
mensagens que serão usadas para rodar a operação;
... <portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<output message="tns:GetLastTradePriceOutput"/> </operation>
</portType> ...
● Operações: São métodos ou chamadas de funções assim como em
Orientação a objetos;
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<output message="tns:GetLastTradePriceOutput"/> </operation>
</portType> …
Elementos do WSDL
17. ● Binding: Define a interface de transporte e estilo, assim como as operações;
● <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>
● Port : Especifica um endereço para uma ligação, definindo então um endpoint único. Parte concreta do
WSDL
<port name="StockQuotePort“
binding="tns:StockQuoteBinding">
<soap:address location="http://example.com/stockquote"/>
</port>
● Service: Container de um conjunto de funções. Parte concreta do WSDL;
<wsdl:definitions .... >
Elementos do WSDL
18. Estrutura
●Estrutura principal do documento WSDL
<definitions>
<types>
definição de tipos........
</types>
<message>
definição de mensagens....
</message>
<portType>
definição de porta…
</portType>
<binding>
definiçao de binding (associação entre nome/endereço)....
</binding>
</definitions>
19. Tipos de operação
Tipo Definição
One-Way A operação pode receber uma
mensagem mas não retornará uma
resposta
Request-response A operação pode receber uma
requisição e retornará uma resposta
Solicit-response A operação pode enviar uma requisição
e esperar por uma resposta
Notification A operação pode enviar uma
mensagem mas não esperará por uma
resposta
20. Operação One-Way
● Exemplo:
<message name="newTermValues">
<part name="term" type="xs:string"/>
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="setTerm">
<input name="newTerm" message="newTermValues"/>
</operation>
</portType >
● A porta glossaryterms define uma operação one-way chamada
setTerm;
● SetTerm permite somente entrada de um novo termo de glossario ,
usando a mensagem newTermValue
21. Operação Request-Response
● Exemplo
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
● A Porta GlossaryTerms define uma operação Request-Response chamada getTerm;
● A operação getTerm requer um entrada chamada getTermRequest com o parâmetro
chamado term, e retornará, uma saída chamada getResponseTermResponse com o
parâmetro chamado valor
22. Operação Solicit-Reponse
● Exemplo
<wsdl:definitions .... >
<wsdl:portType .... > *
<wsdl:operation name="nmtoken" parameterOrder="
nmtokens">
<wsdl:output name="nmtoken"? message="qname"/>
<wsdl:input name="nmtoken"? message="qname"/>
<wsdl:fault name="nmtoken" message="qname"/>*
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
● A saída e a entrada estão invertidos como aparece no Request-response;
23. Operação Notification
●Exemplo
<wsdl:definitions .... >
<wsdl:portType .... > *
<wsdl:operation name="nmtoken">
<wsdl:output name="nmtoken"? message="
qname"/>
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
O elemento output significa que somente uma
notificação será enviada ao cliente;
25. Exemplo de código
● Tag de definição que diz que esta é um framework wsdl, o targetnamespace aponta
para a URI do serviço;
<wsdl:definitions targetNamespace="http://localhost:8080/axis/Servico.jws">
● A tag message, representa uma definição abstrata do dado sendo transmitido. Uma
mensagem consiste de partes lógicas, cada uma associada com uma definição.
<wsdl:message name="somaResponse">
● A tag part define a lógica abstrata do conteúdo da mensagem.
<wsdl:part name="somaReturn" type="xsd:int"/>
</wsdl:message>
<wsdl:message name="somaRequest">
<wsdl:part name="valor1" type="xsd:int"/>
<wsdl:part name="valor2" type="xsd:int"/>
</wsdl:message>
● A tag portType defini um conjunto abstrato de operações. Cada operação refere-se a
uma mensagem de entrada e uma mensagem de saída.
<wsdl:portType name="Servico">
26. Exemplo de código
<wsdl:operation name="soma" parameterOrder="valor1 valor2">
● Operação request-response (input/output);
<wsdl:input message="impl:somaRequest" name="somaRequest"/>
<wsdl:output message="impl:somaResponse" name="somaResponse"/>
</wsdl:operation>
</wsdl:portType>
● A tag binding define um protocol concreto e uma especificação de formato
de dados para a operações e mensagens definidas por um portType.
Neste caso, a tag type refere-se à servico
<wsdl:binding name="ServicoSoapBinding" type="impl:Servico">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.
org/soap/http"/>
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="somaRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.
org/soap/encoding/" namespace="http://DefaultNamespace" use="
encoded"/>
</wsdl:input>
27. Exemplo de código
<wsdl:output name="somaResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://localhost:8080/axis/Servico.jws" use="encoded"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
A tag Service define um conjunto de portas usadas
<wsdl:service name="ServicoService">
<wsdl:operation name="soma">
● A Tag define um endereço para o serviço;
<wsdl:port binding="impl:ServicoSoapBinding" name="Servico">
<wsdlsoap:address location="http://localhost:8080/axis/Servico.jws"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
28. Exemplo Prático
●Escolhemos o servidor Web Apache versão 5.5
para windows
●O Web Service Apache Axis Para suportar os
webservices
●A pasta de publicação no windows é a
webapps/axis
●Existem dois códigos o Servidor e o cliente;
●O servidor executa as operações de soma,
multificação, divisão, subtração;
●O Cliente envia a requisição com o pedido de
cálculo contendo os parametros do servidor
(números e a operação em si).
29. Exemplo Prático
● Servidor :
public class Servico {
public int soma(int valor1, int valor2) {
return valor1 + valor2;
}
public int subtracao(int valor1, int valor2) {
return valor1-valor2;
}
public int multiplicacao(int valor1, int valor2) {
return valor1*valor2;
}
public float divisao(int valor1, int valor2) {
return valor1/valor2;
}
}//fim de classe
30. Cliente
import org.apache.axis.client.Service;
import org.apache.axis.client.Call;
public class Cliente {
public static void main(String[] args) throws Exception {
// Endereço, local onde encontra-se o Web Service
String local = "http://localhost:8080/axis/Servico.jws";
// Criando e configurando o serviço
Call call = (Call) new Service().createCall();
// Configurando o endereço.
call.setTargetEndpointAddress(local);
// Marcando o método a ser chamado.
call.setOperationName("soma");
// Parâmetros da função.
Object[] param = new Object[]{new Integer(2),new Integer(4)};
// Retorno da Função
int ret = (Integer)call.invoke(param);
// Imprime o resultado: .
System.out.println("Resultado soma : " + ret);
Uso da Biblioteca
apache.axis
31. Cliente
call.setOperationName("subtracao");
// Parâmetros da função.
param = new Object[]{new Integer(2),new Integer(4)};
// Retorno da Função
ret = (Integer)call.invoke(param);
// Imprime o resultado: .
System.out.println("Resultado subtracao: " + ret);
call.setOperationName("multiplicacao" );
param = new Object[]{new Integer(2),new Integer(4)};
// Retorno da Função
ret = (Integer)call.invoke(param);
// Imprime o resultado: .
System.out.println("Resultado multiplicao: " + ret);
}
}
33. UDDI
"Um componente importante da arquitetura de serviços
Web é formado por um serviço de diretório que armazena
descrições de serviços. Esse serviço obedece ao padrão
integração, descoberta e descrição universal (Universal
Description, Discovery and Integration - UDDI). Como seu
nome sugere, o UDDI prescreve o layout de um banco de
dados que contém descrições de serviços. Estas permitirão
a clientes de serviços Web procurar serviços relevantes."
(Tanenbaum, 2007)
34. UDDI
● Universal Description, Discovery and Integration
● Atualmente está na versão 2;
● é um protocolo que especifica um método para publicar e
descobrir diretórios de serviços em uma arquitetura orientada
a serviços (SOA).
● Um serviço de registro UDDI é um WebService que gerencia
informação sobre provedores, implementações e metadados
de serviços.
● Provedores de serviços podem utilizar UDDI para publicar os
serviços que eles oferecem.
● Usuários de serviços podem usar UDDI para descobrir
serviços que lhes interessem e obter os metadados
necessários para utilizar esses serviços.
35. UDDI
A especificação UDDI define:
●APIs SOAP utilizadas para publicar e
obter informações de um registro UDDI
●Esquemas XML do modelo de dados do
registro e do formato das mensagens
SOAP
●Definições WSDL;
36. UDDI
●Três componentes de Registro: Yellon Pages, White
Pages, Green pages.
●Páginas Brancas: Incluem informação geral sobre
uma empresa específica, como por exemplo, nome
de um negócio, descrição do negócio, informação de
contato, endereço, números de telefone, fax, ou
mesmo incluir identificadores de negócios (business
identifiers). Por exemplo, 7371 representa Serviços de
Programação de Computadores e 2621 representa
Paper Mills.
●Páginas Amarelas: Essas incluem dados de
classificação geral para qualquer empresa ou
serviço oferecido. Por exemplo, esses dados podem
incluir a indústria, o produto, ou códigos geográficos
37. UDDI
●Páginas Verdes: são usadas para indicar os
serviços oferecidos por cada negócio, incluindo
todas as informações técnicas envolvidas na
interação com o serviço. explica como fazer a
comunicação com eles.
●Geralmente, essa informação inclui um apontador
(ponteiro) para uma especificação externa e um
endereço para invocar o serviço. UDDI não é
restrito a descobrir serviços baseados em SOAP.
Ao contrário, pode ser usado também, para
descrever qualquer serviço, desde uma única
página Web ou endereços de email, até serviços
CORBA, Java RMI, ou mesmo, serviços EJB
38. UDDI
●Clientes podem usar as páginas amarelas
para procurar uma categoria particular de
serviços tais como agências de viagens e
livrarias;
●Ou eles podem usar as páginas brancas
para procurar um serviço com referência
para a organização que provê ele;
39. Arquitetura UDDI
●UDDI Data Model: Um Esquema XML para
descrição de negócios e serviços web.
●UDDI API: É uma API baseada em SOAP
para pesquisa e publicação de dados UDDI.
●UDDI cloud services: é uma implementação
operacional completa da especificação
UDDI. Tal parte habilita qualquer um a
buscar dados UDDI existentes, e também, a
qualquer empresa registrar-se a si própria e
seus respectivos serviços
40. Estrutura de dados (data
Models)
bussinessEntity
Informações de
alto nível,
capazes de
serem lidas por
seres humanos
sobre o
publicador
bussinessService
s
Informações de
alto nível,
capazes de
serem lidas por
seres humanos
sobre a família
de serviços
bindingTemplate
Informações
sobre a interface
de serviço
tModel
Descrição do
serviço
UR
L
41. Estrutura de dados
●bussinessEntity: Descreve a organização que
fornece os serviços, mostrando nome, endereço e
atividades;
●BussinessServices: Armazena informações sobre
um conjunto de instâncias e referências para
descrição de serviços;
●BindingTemplate: Armazena os endereços dos
webservices e as referencias para as descrições
do serviço;
●tModel: Mantém descrição de serviços,
geralmente documentos WSDL, localizados for a
da base de dados e acessados via URLs;
42. Processo de Descoberta
(Discovery)
●O processo de localizar serviços na Web
através de registries.
●Registries de serviços na Web são
repositórios contendo documentos que
descrevem dados de negócios.
●Registries, também, proporcionam
características tais como, capacidade de
busca e acesso programático para
aplicações remotas
43. Discovery
●Usando um registry, uma organização que
deseja utilizar, um serviço para processar
pagamentos de tickets de alimentação, pode
localizar todos os serviços disponíveis
publicamente, que proporcionam a
necessária funcionalidade;
●A organização pode comparar serviços e
então tomar a decisão, de qual serviço,
melhor se ajusta às necessidades da
organização.
44. Discovery
●Discovery pode ser caracterizado em Discovery
direto ou Discovery indireto
●Discovery direto é o processo de obter dados a
partir de um registry mantido por um provedor
de serviço. Dados obtidos por Discovery direto
são mais precisos e, portanto, confiáveis, visto
que a organização que provê a informação
também opera o serviço na Web.
●Com discovery indireto, uma organização obtém
dados através de uma terceiro registry, cujos
dados podem não ser precisos, porque
provedores de serviço poderiam não atualizar
informação nesse registry tão freqüentemente.
45. UDDI API
●API para publicação e pesquisa de dados;
●Para pesquisas há dois tipos de
classificação: API find e API get;
●A API find é usado para reter uma lista
de referencias para dados UDDI usando
uma critério de busca;
●A API get é usada para retornar o atual
conteúdo da entidade de dado;
46. UDDI API
A tabela a seguir resume os métodos de pesquisa
UDDIFind API Get API
find_binding: localiza um binding
dentro de um registro
bussinessService
get_bindingDetail: retorna a
informcaçao de bindingTemplate
find_business: Localiza informação
sobre um ou mais negócios.
get_businessDetail: Retorna a
informação da businessEntity para uma
ou mais negócios ou organizações.
find_service: localiza um serviço
específico dentro de um registro
bussinessEntity
get_businessDetailExt: Retorna a
informação extendida de businessEntity.
find_tModel: retorna informação
completa do bussinessEntity;
get_serviceDetail: Retorna o detalhes
completo para um dado conjunto de
registros de dados do businessService
data.
47. Publicação
●UDDI fornece uma interface para publicar e
atualizar informações sobre serviços;
●Na primeira vez que o serviço é publicado no
servidor UDDI, Uma chave é usada para
identificá-lo;
●Pode-se criar, atualizar e deletar os registros
UDDI já publicados ;
●Assim a qualquer momento as entradas
businessEntity, businessService,
bindingTemplate, tModel, podem ser
alteradas.
48. Bibliografia
● COULOURIS, G. , DOLLIMORE, J., KINDBERG, T. Sistemas Distribuídos
- Conceitos e Projeto. 4ª ed - São Paulo: Bookman, 2007.
● TANENBAUM, Andrew S. Sistemas Distribuídos: princípios e paradigmas.
2ª ed - São Paulo: Pearson Prentice Hall, 2007. 334p.
● http://www.w3.org/TR/wsd
● Building Web Services with Java;
● Web Services Essential;
● http://pt.wikipedia.org/wiki/Web_service
●http://uddi.org/pubs/ProgrammersAPI-V2.
04-Published-20020719.htm