RMI: Servidor com ativação

Um objeto servidor RMI passível de ativação remota é definido através de classes do pacote java.rmi.activation. O ponto principal é que a classe desse servidor deve estender a classe Activatable, uma extensão de java.rmi.server.RemoteServer que usa o mecanismo de serialização para oferecer a persistência do serviço.

Um aspecto fundamental na implementação do servidor Activatable é a necessidade de especificar pelo menos um construtor de inicialização. A classe Activatable oferece construtores com argumentos específicos para o registro (no serviço de ativação) e a ativação de objetos, que serão invocados a partir do construtor de inicialização implementado.

O serviço de ativação irá procurar, na classe de implementação, o construtor com a assinatura, adequada para a ativação, contendo dois argumentos. O primeiro argumento é um identificador de ativação, um objeto da classe ActivationID que, além de identificar unicamente o serviço, encapsula a referência para o objeto remoto. O segundo argumento é um objeto da classe MarshalledObject, uma representação serializada de argumentos para a construção do objeto.

No exemplo do contador remoto, a implementação tomaria esta forma. Como se percebe, as únicas diferenças em relação à implementação anterior estão na superclasse e na definição dos construtores. Estes, por sua vez, invocam o construtor de Activatable.

Uma vez criada a implementação do serviço, é preciso (como anteriormente) ter uma aplicação que realize o setup do serviço para a aplicação RMI.