Java RMI – Introdução

Publicidade

RMI significa Invocação de Método Remoto. É um mecanismo que permite a um objeto residente em um sistema (JVM) acessar/invocar um objeto rodando em outro JVM.

RMI é usado para construir aplicações distribuídas; ele fornece comunicação remota entre programas Java. Ele é fornecido no pacote java.socio.

arquitetura de uma aplicação RMI

em uma aplicação RMI, nós escrevemos dois programas, UM programa servidor (reside no servidor) e um programa cliente (reside no cliente).

  • dentro do programa servidor, um objeto remoto é criado e a referência desse objeto é disponibilizada para o cliente (usando o registro).

  • o programa cliente pede os objetos remotos no servidor e tenta invocar seus métodos.

o diagrama seguinte mostra a arquitetura de uma aplicação RMI.

Arquitectura RMI

vamos agora discutir os componentes desta arquitectura.

  • camada de transporte – esta camada conecta o cliente e o servidor. Gerencia a conexão existente e também cria novas conexões.

  • Stub − a stub é uma representação (proxy) do objeto remoto no cliente. Ele reside no sistema cliente; ele atua como um gateway para o programa cliente.

  • esqueleto – este é o objeto que reside no lado do servidor. o stub comunica com este esqueleto para passar o pedido ao objecto remoto.

  • RRL − camada de referência remota) – é a camada que gerencia as referências feitas pelo cliente ao objeto remoto.

funcionamento de uma Aplicação RMI

Os pontos seguintes resumem como uma RMI aplicativo funciona−

  • Quando o cliente faz uma chamada para o objeto remoto, ele é recebido pelo stub que, eventualmente, passa este pedido para a RRL.

  • quando o cliente-side RRL recebe o pedido, ele invoca um método chamado invocar () do objeto remoteRef. Passa o pedido para o RRL no lado do servidor.

  • o RRL no lado do servidor passa o pedido para o esqueleto (proxy no servidor) que finalmente invoca o objeto necessário no servidor.

  • o resultado é passado todo o caminho de volta para o cliente.

Marshalling e Unmarshalling

Sempre que um cliente invoca um método que aceita parâmetros de um objeto remoto, os parâmetros são agrupados em uma mensagem antes de ser enviada através da rede. Estes parâmetros podem ser de tipo primitivo ou objetos. Em caso de tipo primitivo, os parâmetros são colocados juntos e um cabeçalho é anexado a ele. No caso de os parâmetros serem objetos, então eles são serializados. Este processo é conhecido como marshalling.

no lado do servidor, os parâmetros embalados são desagregados e, em seguida, o método necessário é invocado. Este processo é conhecido como unmarshalling.

RMI Registry

RMI registry is a namespace on which all server objects are placed. Cada vez que o servidor cria um objeto, ele registra este objeto com a RMIregistry (usando os métodos bind() ou reBind ()). Estes são registrados usando um nome único conhecido como nome bind.

para invocar um objeto remoto, o cliente precisa de uma referência desse objeto. Naquela época, o cliente obtém o objeto do registro usando seu nome bind (usando o método lookup ())).

a ilustração seguinte explica todo o processo –

Registo

objectivos da RMI

seguem-se os objectivos da RMI−

  • minimizar a complexidade da aplicação.
  • para preservar a segurança do tipo.
  • recolha de lixo distribuída.
  • minimizar a diferença entre trabalhar com objetos locais e remotos.
Anúncios



+