quinta-feira, 23 de outubro de 2014

Java RMI

Apresento aqui um projeto simples de Java RMI para avaliar o mecanismo de comunicação entre objetos remotos no Java. Ele consiste no desenvolvimento de um projeto servidor e um projeto cliente, usando o padrão MVC (Model-View-Controler) para a comunicação.

Como os dois projetos compartilham interfaces e classes de dados, duas bibliotecas Java foram criadas, sendo:
  • broker: interfaces para o implementação do padrão MVC.
  • data: modelo de dados do projeto, que consiste em apenas uma classe.
Ambos os executáveis Java, cliente e servidor, fazem uso das duas bibliotecas. Todos os módulos do projetos estão estruturados pelo Maven, assim fica fácil abri-los tanto no NetBeans quanto no Eclipse, ou em outra ferramenta que interprete Maven.

Após executar o servidor, múltiplas instâncias do cliente podem (e devem) se abertas para teste. A interface gráfica é muito simples e permite o usuário manter uma lista de nomes apenas, ou seja, o usuário pode inserir, alterar ou excluir nomes desta lista. Um mecanismo de callback do servidor para os clientes foi implementado. Assim, uma ação executada num cliente automaticamente refletirá na interface gráfica dos demais. A Figura 1 apresenta a interface gráfica para o cliente Java RMI.


Figura 1 - Interface gráfica do cliente Java RMI.
Junto com o código disponível, está o modelo de classes implementado no projeto. Para ler o modelo, será necessário instalar o Astah Community. A Figura 2 apresenta o diagrama de classes do projeto, onde os quatro módulos do projeto, e suas classes e interfaces, são apresentados com cores distintas.

Figura 2 - diagrama de classes do projeto.

Abaixo, está disponível pelo Google Drive o código do projeto para download.

A execução não tem segredo; basta rodar primeiramente o servidor e depois várias instâncias do cliente. Não há necessidade de iniciar o Java Registry RMI porque há uma codificação no próprio servidor para fazer isso automaticamente.

Como existem vários blogs que descrevem códigos para implementação de servidor e cliente Java RMI, aqui não vou apresentar e nem comentar os códigos do projeto. O objetivo é apenas disponibilizar o código para que se possa rapidamente fazer funcionar o Java RMI.