Na execução da aplicação RMI desenvolvida, é preciso ter vários processos executando simultaneamente, conforme ilustrado abaixo:
O registro RMI (rmiregistry) executa isoladamente em uma máquina virtual Java. O servidor da aplicação, assim como a implementação do serviço, estão executando em outra máquina virtual Java; sua interação com o registro (ao invocar o método bind()) se dá através de uma referência remota. Da mesma forma, cada aplicação cliente pode ser executada em sua própria máquina virtual Java; suas interações com o registro (método lookup()) e com a implementação do serviço (usando os correspondentes stub e skeleton) dão-se também através de referências remotas.
Portanto, para executar uma aplicação RMI é preciso inicialmente
disponibilizar o serviço de registro RMI.
Para tanto, o aplicativo rmiregistry
deve ser executado:
Unix | Dos |
---|---|
> rmiregistry & | > start rmiregistry |
O símbolo & ao final do comando Unix, assim como o start no comando Dos, dão início à execução do comando especificado como um "processo de fundo" (em background).
Com o rmiregistry
disponível, o servidor pode ser
executado. Para tanto, essa máquina virtual Java deverá ser
capaz de localizar e carregar as classes do servidor, da
implementação do serviço e do skeleton:
Unix | Dos |
---|---|
> java CountServer & | > start java CountServer |
Após a execução desse comando, a mensagem Count Server ready. deverá surgir na tela, indicando que o servidor obteve sucesso na criação e registro do serviço e portanto está apto a responder às solicitações de clientes.
Finalmente, com o servidor já habilitado para responder às solicitações, o código cliente pode ser executado. Essa máquina virtual deverá ser capaz de localizar e carregar as classes com a aplicação cliente, a interface do serviço e o stub para a implementação do serviço:
> java CountClient De 0 para 1000 > java CountClient De 1000 para 2000 > java CountReset > java CountClient De 0 para 1000
Seria possível também ter várias ativações simultâneas de CountClient em diferentes máquinas virtuais Java.
No caso mais simples de execução, as diversas máquinas virtuais Java estarão executando em uma mesma máquina, compartilhando um CLASSPATH comum. No entanto, há mecanismos para permitir o carregamento de classes em uma aplicação RMI envolvendo classes remotas.