Objetos Distribuídos com RMI
Remote Method Invocation (RMI)
Last updated
Remote Method Invocation (RMI)
Last updated
O RMI é uma extensão de software à máquina virtual Java remota (JVM) que permite o envio de mensagens para objetos gerenciados por outra JVM. O RMI propicia uma implementação natural do sistema distribuído em um ambiente Orientados a Objeto.
Objetos de uma determinada máquina poderão enviar mensagens através da rede para objetos presentes em outra máquina.
Implementação da Tecnologia
A partir deste momento vamos chamar de “receptor” ao local onde está o objeto que recebe as mensagens remotas e “transmissor” ao local de onde partem as mensagens remotas.
Quando pensamos em uma aplicação cliente-servidor, é comum que no programa servidor haja objetos receptores. Entretanto, é possível que haja uma situação em que objetos do programa cliente também sejam receptores; ou seja, que recebam mensagens vindas do programa servidor.
Assim, a especificação destes passos se refere aos objetos que recebem as mensagens remotas; estes podem estar no programa servidor ou no programa cliente.
Para cada classe que receber mensagens remotas (receptor), criar uma interface que contenha a especificação destes métodos.
A interface deverá ser especialização da interface Remote.
Os métodos deverão indicar que throws RemoteException (ou seja, podem disparar a exceção RemoteException).
Aplicação Servidor
Na aplicação servidor defino uma interface estendendo a classe Remote do pacote java.rmi.*.
Logo após crio a classe com a implementação dos métodos de nossa aplicação servidora. A Classe de Implementação dos métodos deve estender UnicastRemoteObject e implementar a interface do Servidor.
Por fim implementamos a classe responsável por publicar o Servidor RMI.
Aplicação Cliente
Na aplicação cliente uso a mesma interface definida na aplicação servidor para estabelecer um contrato de comunicação entre as duas partes.
Por fim acesso a aplicação rmi através da Url: rmi://localhost/RmiServidor, onde RmiServidor foi o nome vinculado ao objeto Remoto, e assim consigo acessar aos métodos do meu objeto remoto.