O pacote java.rmi.registry oferece uma classe e uma interface para que classes Java tenham acesso ao serviço de nomes RMI.
A interface
Registry representa
uma interface para o registro de objetos RMI operando em uma
máquina específica. Através de um objeto dessa classe, é
possível invocar o método bind()
que
associa um nome de serviço (um String
) ao objeto que o
implementa.
Para obter uma referência para um objeto Registry são utilizados os métodos da classe LocateRegistry, todos estáticos.
Para obter uma referência para um objeto
Registry
,
o método getRegistry()
da classe
LocateRegistry
é utilizado. Há quatro versões básicas
desse método:
getRegistry()
: obtém referência para o registro
local operando na porta padrão;
getRegistry(int port)
: obtém referência para o
registro local operando na porta especificada;
getRegistry(String host)
: obtém referência para o
registro remoto operando na porta padrão;
getRegistry(String host, int port)
: obtém
referência para o registro remoto operando na porta
especificada.
O método estático createRegistry(int port)
pode ser
utilizado para iniciar um serviço de registro na máquina virtual Java
corrente na porta especificada como argumento, retornando também um
objeto da classe Registry
.
Esse exemplo mostra essa forma
de uma aplicação interagir com o rmiregistry
.
Inicialmente, é preciso obter uma referência para o serviço de
registro, através da invocação do método:
Registry r = LocateRegistry.getRegistry();
Observe que a referência para Registry
é em si uma
referência para um objeto remoto, uma vez que a interface
Registry
é uma extensão da interface
Remote
.
Uma vez que a referência para o serviço de registro tenha sido obtida,
é possível acessar as funcionalidades desse serviço através dos
métodos da interface Registry
. Particularmente, para
registrar um novo serviço utiliza-se o método bind()
:
r.bind(serviceName, myCount);
O objeto que está sendo registrado deve implementar também a interface
java.rmi.Remote
, que identifica todos os objetos que
podem ser acesados remotamente.
Outros serviços disponíveis através dos métodos de
Register
incluem atualização, remoção e busca dos
serviços lá registrados. Para atualizar um registro já existente, o
método rebind()
pode ser utilizado. Para eliminar um
registro, utiliza-se o método unbind()
. Dado o nome de
um serviço, o objeto Remote
que o implementa pode ser
obtido pelo método lookup()
. O método
list()
retorna um arranjo de String
com os
nomes de todos os serviços registrados.