Definição de objetos remotos em RMI

Para especificar um serviço oferecido através de um objeto remoto em RMI, é preciso definir inicialmente a interface remota. A especificação de uma interface remota é equivalente à definição de qualquer interface em Java, a não pelos seguintes detalhes:

Esse exemplo ilustra a definição de uma interface remota para um objeto que contém um contador inteiro. Esse contador é manipulado por quatro métodos, dois para definir o valor do contador (set(), para um valor específico; e reset(), para reiniciar o contador) e dois para consultar o valor do contador armazenado no objeto remoto, (get(), sem alterar o valor; e increment(), que lê o valor antigo e incrementa-o).

O segundo passo envolve a implementação do serviço através da definição de uma classe que implementa essa interface; um objeto dessa classe poderá ser acessado remotamente. Essa classe deve, além de implementar a interface especificada, estender a classe java.rmi.server.UnicastRemoteObject. Para o exemplo acima, isso é ilustrado através dessa classe.

A classe UnicastRemoteObject é uma extensão da classe java.rmi.server.RemoteServer, que por sua vez estende a classe java.rmi.server.RemoteObject. RemoteObject é a classe abstrata base para todas as classes remotas, que re-implementa alguns métodos chaves de Object, adequando-os para operação remota, e implementa a interface java.rmi.Remote. A classe abstrata RemoteServer estende RemoteObject oferecendo algumas facilidades específicas para servidores através de um conjunto de métodos estáticos. Finalmente, a classe UnicastRemoteObject oferece uma concretização de RemoteServer operando de forma ponto-a-ponto com cada cliente do serviço oferecido.


© Ivan Luiz Marques Ricarte
DCA/FEEC/UNICAMP

Last modified: Sun Apr 16 18:13:22 Hora padrão leste Am. Sul 2000