Execução de aplicação RMI

Na execução da aplicação RMI desenvolvida, é preciso ter vários processos executando simultaneamente, conforme ilustrado abaixo:

Esquema de execução RMI

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.