• Nenhum resultado encontrado

CAPÍTULO 5 IMPLEMENTAÇÃO E AVALIAÇÃO

5.4 DESENVOLVIMENTO DOS UTILITÁRIOS UDDI

A UDDI (Universal Description, Discovery and Integration) é uma especificação da OASIS que define uma forma padrão de publicar e localizar negócios e interfaces de seus serviços Web em um registro, ou diretório (BRYAN et al., 2002). Conforme descrito na seção 2.2.5, os registros UDDI têm sido aplicados efetivamente dentro de um cenário mais restrito e privado, mais voltado para a integração entre organizações, possibilitando que os provedores e consumidores de serviços tenham um maior controle nas operações no registro, i.e., na publicação, localização alteração e exclusão de serviços.

Atualmente, o principal modelo de utilização do UDDI é na descoberta de serviços em tempo de desenvolvimento e não dinamicamente em tempo de execução (SÁNCHEZ- NIELSEN et al., 2006). Isto significa que o usuário localiza os serviços de interesse em um registro UDDI, lê a descrição dos serviços, e então desenvolve um cliente que irá interagir com esse serviço descoberto. Isso inviabiliza o uso do UDDI em um cenário altamente dinâmico – como uma RCO – onde a necessidade de localização e invocação de serviços se dá em tempo de execução. Portanto, é necessário o provimento de mecanismos que possibilitem que essas operações em um registro UDDI sejam executadas de maneira transparente e dinâmica, de forma que clientes possam localizar serviços mais agilmente e em tempo de execução.

Esse é o propósito desse pacote, onde são providas ferramentas especificas para cada operação em um registro UDDI, tanto do lado do provedor de serviços – publicação, alteração e exclusão de negócios, serviços, etc – quanto do lado do consumidor de serviços – localização de negócios, serviços, etc. Essas ferramentas podem ser utilizadas em tempo

de execução, onde um serviço é localizado dinamicamente em um registro UDDI, e em seguida invocado, de maneira dinâmica e stubless.

5.4.1 UDDI4J

A especificação da UDDI define uma API baseada em XML para a interação entre cliente – provedor ou consumidor – e o registro UDDI. Conforme descrito anteriormente, a linguagem padrão utilizada para o desenvolvimento dos módulos UDDI foi a linguagem Java. O projeto de código aberto UDDI4J (UDDI4J, 2007) define uma API Java que provê o acesso a qualquer registro UDDI a partir de uma aplicação Java, utilizando o protocolo SOAP para interagir com o registro.

Esta biblioteca será utilizada para o desenvolvimento das ferramentas de interação com o registro UDDI. A escolha dessa biblioteca se deve ao fato de ser de código aberto e gratuita, além de ser compatível com a versão 2.0 da especificação UDDI, que é a versão utilizada pelo registro jUDDI utilizado para os testes.

Interações com um Registro UDDI

A forma de interação com um registro UDDI pode ser feita utilizando duas APIs: a de busca – inquiry – e a de publicação – publish.

As mensagens de busca normalmente são liberadas para uso geral, onde os clientes fazem a busca sem necessidade de autenticação. Os tipos de consulta a UDDI disponíveis são (BELLWOOD et al., 2002):

Método Descrição

find_binding Utilizado para localizar bindings (ligações) entre um ou mais

businessServices registrados.

find_business Utilizado para localizar informações sobre um ou mais negócios.

find_relatedBusinesses Utilizado para localizar informações sobre algum businessEntity que estão relacionados com uma entidade de negócios específica, a qual tem sua chave passada como parâmetro no momento da busca.

find_service Utilizado para localizar serviços específicos dentre as entidades de negócio registradas.

find_tModel Utilizado para localizar uma ou mais estruturas tModels

fazer as requisições de serviços.

get_businessDetail Utilizado para acessar a informação de businessEntity para um ou mais negócios/organizações.

get_businessDetailExt Utilizado para acessar informações estendidas do businessEntity.

get_serviceDetail Utilizado para acessar detalhes completos de um determinado businessService.

get_tModelDetail Utilizado para acessar detalhes completos de um determinado tModel. Tabela 3: Comandos da API de busca (inquiry) em um registro UDDI

As mensagens de publicação são feitas por usuários autenticados e liberados pelo administrador do registro UDDI. Abaixo são apresentadas as mensagens de publicação em um registro UDDI (BELLWOOD et al., 2002):

Método Descrição

add_publisherAssertions Cria um ou mais relacionamentos ao conjunto de relacionamentos do divulgador (publisher).

delete_binding Exclui uma ou mais instancias de bindingTemplate do

registro.

delete_business Exclui um ou mais registros de negócio do registro.

delete_publisherAssertions Exclui um relacionamento específico do conjunto de relacionamentos do divulgador (publisher).

delete_service Exclui um ou mais businessServices do registro delete_tModel Exclui uma ou mais estruturas tModel.

discard_authToken Utilizado para informar a um nó que a informação de autenticação transmitida não é mais válida e deve ser descartada.

get_assertionStatusReport Relata o status dos relacionamentos atuais de publisherAssertions que envolvem qualquer um dos registros de negócio que são gerenciados pelo divulgador que fez a requisição.

get_authToken Utilizado para obter uma informação de autenticação.

get_publisherAssertions Utilizado para obter todos os grupos de publisherAssertion associados a um divulgador.

get_registeredInfo Utilizado para obter uma lista de todos os businessEntity e tModel de um divulgador.

save_binding Utilizado para salvar ou atualizar um elemento

save_business Utilizado para salvar ou atualizar informações sobre um businessEntity.

save_service Utilizado para incluir ou atualizar um ou mais elementos businessService.

save_tModel Utilizado para incluir ou atualizar um ou mais elementos

tModel.

set_publisherAssertions Utilizado para salvar o todo o conjunto de relacionamentos associados a um divulgador.

Tabela 4: Comandos da API de publicação (publish) em um registro UDDI

5.4.2 Detalhes da implementação do módulo UDDI

Os pacotes uddi.util e uddi.impl contêm o código fonte das ferramentas de interação com o registro UDDI.

Foi escolhido pela separação dessas funções em pacotes separados, pois no pacote uddi.impl estão localizadas as classes essenciais e mais utilizadas para a publicação e localização de serviços Web em UDDI, e que podem ser executadas em tempo de execução pelo invocador. A Figura 41 ilustra o diagrama de classes desse pacote.

Já no pacote uddi.util estão as classes que são mais voltadas para a manutenção e administração dos serviços e negócios – atualização e exclusão – e também contém algumas funções individuais que são menos utilizadas. Estas ferramentas normalmente não são utilizadas em tempo de execução. A Figura 42 ilustra o diagrama de classes desse pacote.

Figura 42: Diagrama de classes do pacote uddi.util