RMI (Remote Method Invocation)

 

Funcionamento

 

O funcionamento de RMI consiste basicamente em dois programas, um seria o cliente e outro o servidor. O servidor instancia objetos remotos, o referencia com um nome e faz um "BIND" dele numa 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 fornee os mecanismo para que a comunicação entre cliente e servidor seja possível.

Aplicações distribuidas 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.

A figura Abaixo ilustra como uma aplicação RMI distribuída usa o "rmiregistry" para obter uma referência ao objeto remoto. O servidor chama o registro para associar um nome ao objeto remoto. O cliente procura o objeto remoto pelo seu nome no registro do servidor e então invoca um método nele. A ilustração também mostra que o RMI pode utilizar um servidor "web" para carregar os "bytecodes", de servidor para cliente e vice-versa, de acordo com as necessidades da aplicação.

 

Figura 1
Figura 1 - Aplicação Distribuída

 

Vantagens de Carregar o Código Dinamicamente:

Uma das principais vantagens do RMI é sua capacidade de baixar o código de um objeto, caso a classe desse objeto não seja definida máquina virtual do receptor. Os tipos e o comportamento de um objeto, previamente disponíveis apenas em uma máquina virtual, agora podem ser transmitidos para outra máquina virtual, possivelmente remota. Essa funcionalidade do RMI permite que o código da aplicação seja atualizado dinamicamente, sem a necessidade de recompilar o código.

 


[ Índice | Introdução | Modelo RPC | Funcionamento | Serialização ]
[ "Stubs" e "Skeletons" | Ativação | Segurança | Aplicações | Referências ]