SlideShare uma empresa Scribd logo
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
Agenda
●Visão geral de WebServices
●WSDL
●UDDI
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)
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;
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
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.
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;
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;
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;
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;
Ilustração do WSDL
WSDL
Fonte: http://en.wikipedia.org/wiki/Web_Services_Description_Language
Binding se refere ao
processo de associar
um protocolo ou
formato de dado com
uma entidade
abstrata (mensagem,
operação ou
portType);
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)
WSDL
●O WSDL Contém os seguintes elementos
de marcação:
○ Type
○ portType;
○ Message;
○ Operation;
○ Bind;
○ Service;
○ Port;
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
● 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
● 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
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>
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
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
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
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;
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;
Padrões Troca de Mensagem
para Operações WSDL
(Coulouris, 2007)
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">
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>
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>
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).
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
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
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);
}
}
Resultado
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)
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.
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;
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
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
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;
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
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
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;
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
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.
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.
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;
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.
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.
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
OBRIGADO!!

Mais conteúdo relacionado

Mais procurados

Soa & services web
Soa & services webSoa & services web
Soa & services web
Ghazouani Mahdi
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRS
Lilia Sfaxi
 
Chp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesChp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées Services
Lilia Sfaxi
 
Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
Cynapsys It Hotspot
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVCNathaniel Richand
 
Web services SOAP et REST
Web services  SOAP et RESTWeb services  SOAP et REST
Web services SOAP et REST
RadhoueneRouached
 
Soap vs rest
Soap vs restSoap vs rest
Soap vs rest
Antonio Severien
 
Modele mvc
Modele mvcModele mvc
Modele mvc
Soulef riahi
 
Présentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemePrésentation de JEE et de son écosysteme
Présentation de JEE et de son écosysteme
Stéphane Traumat
 
Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
Dan Vitoriano
 
Solid NodeJS with TypeScript, Jest & NestJS
Solid NodeJS with TypeScript, Jest & NestJSSolid NodeJS with TypeScript, Jest & NestJS
Solid NodeJS with TypeScript, Jest & NestJS
Rafael Casuso Romate
 
Aula 07 - Diagrama de sequencia
Aula 07 - Diagrama de sequenciaAula 07 - Diagrama de sequencia
Aula 07 - Diagrama de sequencia
Leinylson Fontinele
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
Ines Ouaz
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
ENSET, Université Hassan II Casablanca
 
Spring Boot
Spring BootSpring Boot
Spring Boot
HongSeong Jeon
 
P5 stockage
P5 stockageP5 stockage
P5 stockage
Lilia Sfaxi
 
Sharing Data Between Angular Components
Sharing Data Between Angular ComponentsSharing Data Between Angular Components
Sharing Data Between Angular Components
Squash Apps Pvt Ltd
 
Tp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELTp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPEL
Lilia Sfaxi
 
NestJS
NestJSNestJS
NestJS
Wilson Su
 
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Edureka!
 

Mais procurados (20)

Soa & services web
Soa & services webSoa & services web
Soa & services web
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRS
 
Chp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesChp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées Services
 
Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
Web services SOAP et REST
Web services  SOAP et RESTWeb services  SOAP et REST
Web services SOAP et REST
 
Soap vs rest
Soap vs restSoap vs rest
Soap vs rest
 
Modele mvc
Modele mvcModele mvc
Modele mvc
 
Présentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemePrésentation de JEE et de son écosysteme
Présentation de JEE et de son écosysteme
 
Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
 
Solid NodeJS with TypeScript, Jest & NestJS
Solid NodeJS with TypeScript, Jest & NestJSSolid NodeJS with TypeScript, Jest & NestJS
Solid NodeJS with TypeScript, Jest & NestJS
 
Aula 07 - Diagrama de sequencia
Aula 07 - Diagrama de sequenciaAula 07 - Diagrama de sequencia
Aula 07 - Diagrama de sequencia
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
P5 stockage
P5 stockageP5 stockage
P5 stockage
 
Sharing Data Between Angular Components
Sharing Data Between Angular ComponentsSharing Data Between Angular Components
Sharing Data Between Angular Components
 
Tp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELTp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPEL
 
NestJS
NestJSNestJS
NestJS
 
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
 

Semelhante a Wsdl e uddi

Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
Alexandre Antunes
 
Web service
Web serviceWeb service
Web service
Junior Moraes
 
Web services, aplicações, acesso a aplicações, XML, API
Web services, aplicações, acesso a aplicações, XML, APIWeb services, aplicações, acesso a aplicações, XML, API
Web services, aplicações, acesso a aplicações, XML, API
Nuno Pereira
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
Regis Magalhães
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
Regis Magalhães
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - Resumo
Handerson Frota
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo F
mdmansur
 
12 sax
12 sax12 sax
12 sax
ZdeLucas
 
Sistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web ServicesSistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web Services
Adriano Teixeira de Souza
 
Tw Dwr 2007 Ap01
Tw Dwr 2007 Ap01Tw Dwr 2007 Ap01
Tw Dwr 2007 Ap01
Milfont Consulting
 
Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3
David Ruiz
 
Aplicações de tempo real com Meteor.js
Aplicações de tempo real com Meteor.jsAplicações de tempo real com Meteor.js
Aplicações de tempo real com Meteor.js
Rafael Sales
 
Java wsdp
Java wsdpJava wsdp
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
Glaucio Scheibel
 
Web Services
Web ServicesWeb Services
Web Services
Norberto Enomoto
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
ledsifes
 
1 ficheiro
1 ficheiro1 ficheiro
1 ficheiro
sharik27
 
02 - Fundamentos de Servlets
02 - Fundamentos de Servlets02 - Fundamentos de Servlets
02 - Fundamentos de Servlets
Marcio Marinho
 
Web services
Web servicesWeb services
Web services
Hélder Oliveira
 
Cap12
Cap12Cap12

Semelhante a Wsdl e uddi (20)

Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
 
Web service
Web serviceWeb service
Web service
 
Web services, aplicações, acesso a aplicações, XML, API
Web services, aplicações, acesso a aplicações, XML, APIWeb services, aplicações, acesso a aplicações, XML, API
Web services, aplicações, acesso a aplicações, XML, API
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - Resumo
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo F
 
12 sax
12 sax12 sax
12 sax
 
Sistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web ServicesSistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web Services
 
Tw Dwr 2007 Ap01
Tw Dwr 2007 Ap01Tw Dwr 2007 Ap01
Tw Dwr 2007 Ap01
 
Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3
 
Aplicações de tempo real com Meteor.js
Aplicações de tempo real com Meteor.jsAplicações de tempo real com Meteor.js
Aplicações de tempo real com Meteor.js
 
Java wsdp
Java wsdpJava wsdp
Java wsdp
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Web Services
Web ServicesWeb Services
Web Services
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
1 ficheiro
1 ficheiro1 ficheiro
1 ficheiro
 
02 - Fundamentos de Servlets
02 - Fundamentos de Servlets02 - Fundamentos de Servlets
02 - Fundamentos de Servlets
 
Web services
Web servicesWeb services
Web services
 
Cap12
Cap12Cap12
Cap12
 

Último

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 

Último (8)

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 

Wsdl e uddi

  • 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
  • 2. Agenda ●Visão geral de WebServices ●WSDL ●UDDI
  • 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;
  • 12. WSDL Fonte: http://en.wikipedia.org/wiki/Web_Services_Description_Language Binding se refere ao processo de associar um protocolo ou formato de dado com uma entidade abstrata (mensagem, operação ou portType);
  • 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;
  • 24. Padrões Troca de Mensagem para Operações WSDL (Coulouris, 2007)
  • 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