Fábricas de Objetos Remotos

No procedimento básico para desenvolver uma aplicação distribuída em RMI, cada servidor remoto criado é cadastrado no serviço de registro RMI. No entanto, esse tipo de estratégia pode ser ineficiente quando o número de objetos remotos for grande ou mesmo não previsível antes da execução. Considere nos mesmos exemplos se, ao invés de um único contador, o servidor remoto estivesse implementando diversos contadores, criados de acordo com a demanda.

A estratégia para lidar com esse tipo de situação é usar o conceito de fábrica de objetos remotos. Nesse caso, o servidor que está registrado em rmiregistry não é uma implementação individual do serviço, mas sim um gerenciador de instâncias de implementação do serviço. Esse gerenciador deve implementar uma interface remota que permita que o cliente obtenha uma referência remota para o serviço desejado em duas etapas:

  1. obtendo a referência para o gerenciador através da invocação do método lookup(); e
  2. obtendo a referência para o serviço propriamente dito através da invocação do método do gerenciador que retorna a referência.

Esses exemplos usando contadores inteiros ilustram a utilização do conceito de fábrica de objetos remotos. Além da implementação do serviço e da sua correspondente interface, é preciso inicialmente definir uma interface para a fábrica. Nesse exemplo, essa interface especifica a funcionalidade de um "gerenciador de contadores", que recebe o nome do contador e retorna uma referência remota para um objeto contador.

No lado servidor, o que muda em relação ao exemplo anterior é que agora não é mais o objeto que implementa o contador que deve ser cadastrado no registry, mas sim o objeto fábrica, uma implementação da interface especificada para o "gerenciador de contadores". Essa fábrica, por sua vez, mantém um registro interno dos objetos criados para poder retornar as referências solicitadas pelos clientes remotos. Essa classe combina as funcionalidades da implementação de uma interface remota com aquelas de um servidor RMI.

No lado do cliente há referências agora a duas interfaces remotas, uma para o "gerenciador de contadores" e outra para o contador. A primeira delas é resolvida através do serviço de registro do RMI, enquanto que a referência para o objeto do segundo tipo de interface é obtido a partir dessa referência para o gerenciador que foi obtida.