Este artigo trata do pacote
java.rmi da
API Java que define classes e métodos para acesso a objetos distribuídos. Aqui estão uma descrição breve da API e os métodos mais comuns, além da descrição dos aspectos teóricos envolvidos no acesso remoto a objetos em
JAVA.
1. IntroduçãoO 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 RMIA 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... ;)