java rmi
DESCRIPTION
Java RMITRANSCRIPT
![Page 1: JAVA RMI](https://reader036.vdocuments.pub/reader036/viewer/2022071803/55cf99e4550346d0339fa828/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022071803/55cf99e4550346d0339fa828/html5/thumbnails/2.jpg)
Í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](https://reader036.vdocuments.pub/reader036/viewer/2022071803/55cf99e4550346d0339fa828/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022071803/55cf99e4550346d0339fa828/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022071803/55cf99e4550346d0339fa828/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022071803/55cf99e4550346d0339fa828/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022071803/55cf99e4550346d0339fa828/html5/thumbnails/7.jpg)
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;