1. Introdução
O pacote RMI está disponível no JDK (Java development kit) desde a versão 1.1 o formato como os objetos são acessados a partir de aplicações locais é semelhante ao formato usado pela arquitetura CORBA a Ilustração 1 representa o formato usado pelas requisições RMI.
Para que os objetos possam se comunicar usando o pacote RMI é necessário definir uma interface que estenda a interface Remote, assim o objeto que deseja ser executado e acessado remotamente deve implementar essa interface.
Segue o exemplo de uma definição da interface Remote:
Assim basta que a classe que tem a implementação dos métodos implemente esta interface para que esteja disponível para ser chamada remotamente.
2. Arquitetura RMI
A arquitetura RMI é composta das classes e interfaces de acesso a métodos remotos, o funcionamento interno deste recurso é possível graças a dois mecanismos Stubs e Skeletons. Iremos definir estes mecanismos neste item.
Um Stub fica localizado localmente e para o objeto que acessa métodos remotos age como o
objeto remoto, ele implementa a mesma interface antes publicada e registrada no servidor RMI. A função do Stub é portanto, encapsular uma série de operação necessárias ao acesso a objetos
remotos.
As atividades deste mecanismo estão descritas a seguir:
● Iniciar a conexão com a máquina virtual Java remotamente;
● Serializar e transmitir os objetos para a máquina virtual remota;
● Aguardar o resultado à chamada do método remoto;
● Desserializar os objetos ou exceções recebidos pela requisição;
● Retornar o valor ao objeto que o pediu.
Já no lado do servidor onde os objetos remotos estão sendo armazenados a forma de tratar as
chamadas remotas é utilizando um Skeleton. Este Skeleton assim como no Stub é responsável por encapsular a série de atividades necessárias para a decodificação, execução e o envio dos resultados de uma chamada.
As atividades executadas pelo Skeleton são as seguintes:
● Desserializar os objetos da requisição atual;
● Invocar o método do objeto correspondente;
● Serializar e enviar o resultado do método como resposta.
A partir da versão 2 do Java um novo protocolo de comunicação foi escrito de modo que as
ações executadas pelo Skeleton agora são executadas por um código genérico, assim não é necessário criar uma classe Skeleton.
3. Um Exemplo simples
Aguarde o próximo capítulo…