Serviço RMI para ativação de objetos

Na primeira especificação de RMI (JDK 1.1), era necessário que um serviço oferecido por um objeto fosse explicitamente ativado em alguma máquina virtual Java e então fosse cadastrado em um serviço de registro. Essa foi a forma adotada no exemplo anterior para execução de uma aplicação RMI.

O problema com essa abordagem ocorre principalmente quando, por algum motivo não previsto, o serviço torna-se indisponível. Neste caso, não há como sinalizar o cliente ou o registro sobre esse fato. A única indicação seria, no momento em que o cliente tentasse utilizar a referência remota, a ocorrência de uma exceção:

      java.rmi.ConnectException: Connection refused to host: (etc.)
    

O serviço de ativação, disponível a partir de JDK 1.2, permite contornar essa limitação. Através da utilização dos recursos disponíveis nesse serviço, é possível criar automaticamente um objeto remoto com a implementação do serviço apenas quando há a solicitação para obter a referência para um objeto daquela classe. Usando o mesmo mecanismo, é possível reiniciar a execução de objetos remotos que tenham encerrado sua execução em decorrência de alguma falha do sistema.

Para utilizar o serviço de ativação RMI, é preciso usar o conjunto de classes do pacote java.rmi.activation para o servidor com ativação dinâmica. O serviço de ativação propriamente dito é executado em uma máquina virtual Java com um objeto da classe java.rmi.activation.Activator. A aplicação rmid, distribuída na plataforma Java 2, é um daemon que implementa esse serviço.

Veja também, da documentação Java, tutoriais sobre Remote Object Activation.