java rmi

9
UNIVERSIDADE SÃO TOMÁS DE MOÇAMBIQUE FACULDADE DE CIÊNCIAS E TECNOLOGIAS DE INFORMAÇÃO CURSO DE TECNOLOGIA E SISTEMAS DE INFORMAÇÃO Sistemas Distribuídos JAVA RMI Discentes: Casimiro Hilario Nhantumbo Ivando Atanásio Tembe Docentes: Dr. Jonnathan Guambe Dr. Colaço Nhongo

Upload: ivanzamurano

Post on 28-Nov-2015

30 views

Category:

Documents


3 download

DESCRIPTION

Java RMI

TRANSCRIPT

Page 1: JAVA RMI

UNIVERSIDADE SÃO TOMÁS DE MOÇAMBIQUE

FACULDADE DE CIÊNCIAS E TECNOLOGIAS DE INFORMAÇÃO

CURSO DE TECNOLOGIA E SISTEMAS DE INFORMAÇÃO

Sistemas Distribuídos

JAVA RMI

Discentes:

Casimiro Hilario Nhantumbo

Ivando Atanásio Tembe

Docentes:

Dr. Jonnathan Guambe

Dr. Colaço Nhongo

Maputo, Outubro de 2013

Page 2: JAVA RMI

Índice

Introdução...................................................................................................................................................3

RMI..........................................................................................................................................................4

Funcionamento.......................................................................................................................................4

Criação de interfaces, objetos e métodos remotos.................................................................................5

Nomeando objetos remotos....................................................................................................................5

Stub.........................................................................................................................................................6

Skeleton..............................................................................................................................................6

Na "Virtual Machine" remota, cada objeto deve ter um "skeleton" correspondente ao "stub". O "skeleton" é responsável por enviar a chamada ao objeto remoto.....................................................6

Vantagens e desvantagens do RMI..........................................................................................................7

Vantagens............................................................................................................................................7

Desvantagens......................................................................................................................................7

Page 3: JAVA RMI

Introdução

O presente trabalho ira abordar sobre a invocação remota de métodos em Java, desde a sua

definição básica, o seu funcionamento, vantagens e desvantagens de uso. Abordaremos

também acerca do stubs e do skeleton que exercem uma função muito importante na troca de

mensagem entre o cliente e o servidor.

RMI é uma das abordagens da plataforma JAVA para prover as funcionalidades de uma

plataforma de objetos distribuídos. Esse sistema de objetos distribuídos faz parte do núcleo

básico do JAVA desde a versão jdk.com, sua API sendo especificada através do pacote java.rmi

e seus sub-pacotes.

Através da utilização da arquitetura RMI, é possível que um objeto ativo em uma máquina

virtual JAVA possa interagir com objetos de outras máquinas virtuais JAVA, independentemente

da localização dessas máquinas virtuais.

A RMI fornece ferramentas para que seja possível ao programador desenvolver uma aplicação

sem se preocupa com detalhes de comunicação entre os diversos possíveis elementos (hosts)

de um sistema.

Page 4: JAVA RMI

RMI

O remote method invocation é uma interface de programação que permite a execução de

chamadas remotas em aplicações desenvolvidas em JAVA.

Funcionamento

O funcionamento de RMI consiste basicamente em dois programas, segundo a arquitetura

cliente-servidor, onde um seria o cliente e outro o servidor.

O servidor instancia objetos remotos, os referencia como um nome, e faz um "BIND" em uma

porta onde este objeto espera por clientes que invoquem seus métodos. Já o cliente referencia

remotamente um ou mais métodos de um objeto remoto.

RMI fornece os mecanismos para que a comunicação entre cliente e servidor seja possível. Esse

tipo de aplicação geralmente é denominada como Aplicação de Objeto Distribuído, que

precisam, portanto, executar as seguintes ações:

Localizar objetos remotos - Uma aplicação pode usar dois mecanismos para obter

referências de objetos remotos. Ela pode registrar o objeto remoto com a ferramenta

de nomes do RMI, que se chama "rmiregistry", ou ela pode passar e retornar referências

aos objetos remotos como parte de sua operação normal.

Se comunicar com objetos remotos - Os detalhes de comunicação entre objetos

remotos são tratados pelo RMI, ou seja, para o programador, a comunicação remota é

semelhante a uma chamada ao método localmente.

Carregar "bytecodes" de objetos móveis - Como o RMI permite que objetos remotos

sejam passados como parâmetros numa função, ele fornece os mecanismos necessários

para carregar o código dos objetos remotos.

Page 5: JAVA RMI

Criação de interfaces, objetos e métodos remotos

Toda aplicação JAVA é construída a partir de interfaces e classes, a interface declara métodos.

As classes implementam os métodos declarados na interface e possivelmente conterá métodos

adicionais. Numa aplicação distribuída, objetos remotos são objetos com métodos que podem

ser invocados entre Java VM.

Para se tornar um objeto remoto, a classe deve implementar uma interface remota:

A interface remota deve estender a interface java.rmi.Remote.

Todo método em sua declaração deve conter no throws a exceção

java.rmi.RemoteException.

Nomeando objetos remotos

Os clientes acham os serviços remotos usando o serviço de nomeação ou diretório (naming or

directory). O serviço de nomeação ou diretório executa como um endereço bem formado

(host:port). O RMI pode usar diferentes tipos de serviços de diretório, incluindo o JNDI. O

próprio RMI inclui um simples serviço, chamado de RMI Registry. O RMI Registry executa em

cada máquina que hospeda o serviço remoto, por definição na porta 1099. Em um host, um

programa servidor cria um serviço remoto, primeiramente criando o objeto que implemente

aquele serviço. Em seguida ele exporta aquele objeto para o RMI. Quando o objeto é exportado

o RMI cria um serviço que aguarda as conexões do cliente. O servidor registra o objeto no RMI

Registry, com um nome público. No lado do cliente o RMI Registry é acedido através da classe

estática Naming. Ela provém do método lookup( ), que o cliente usa para requisitar o registro.

Esse método aceita a URL que especifica o nome do servidor e o nome do serviço desejado. O

método retorna uma referência remota para o objeto do serviço. A URL é formada como

seguinte:

rmi://[host_name]:[port_number]/[service_name]

Page 6: JAVA RMI

Stub

O "stub" funciona semelhante a um proxy para o objeto remoto. Quando um objeto local

invoca um método num objeto remoto, o "stub" fica responsável por enviar a chamada ao

método para o objeto remoto.

Passos durante a invocação do "stub":

Iniciar conexão com a "Virtual Machine" que contém o objeto remoto.

Escrever e transmitir os parâmetros para a "Virtual Machine" remota.

Esperar pelos resultados da invocação do método.

Ler os resultados retornados.

Retornar os valores ao objeto que executou a chamada.

O "stub" esconde a serialização dos parâmetros e toda a comunicação em nível de rede, com o

objetivo de simplificar o mecanismo de realização da chamada.

Skeleton

Na "Virtual Machine" remota, cada objeto deve ter um "skeleton" correspondente ao "stub". O

"skeleton" é responsável por enviar a chamada ao objeto remoto.

Passos do "skeleton" quando recebe uma chamada:

Ler os parâmetros enviados pelo "stub"

Invocar o método no objeto remoto

Escrever e transmitir o resultado ao objeto que executou a chamada

Page 7: JAVA RMI

Vantagens e desvantagens do RMIVantagens

Comunicação orientada a objetos;

Sintaxe da chamada de método local é igual à sintaxe da chamada de método remoto;

Rápida difusão com a plataforma Java;

Capacidade de baixar o código de um objeto, caso a classe desse objeto não seja

definida máquina virtual do recetor;

O código da aplicação pode ser atualizado dinamicamente, sem a necessidade de

recompilar;

Desvantagens

Como RMI usa comunicação síncrona, o cliente não pode fazer outra tarefa enquanto

espera a resposta do servidor;

São necessárias configurações adicionais no firewall, causando restrições de acesso e

desempenho;

Somente entre programas JAVA;