Java - rmi
Edvar Oliveira UFPA - 2004
Objetivo
Introduzida no Java, no JDK versão 1.1 O principal objetivo do RMI é facilitar a programação distribuída em Java com a mesma sintaxe e semântica usada em programas não-distribuídos.
Arquitetura RMI
A arquitetura RMI é baseada em um importante princípio: a definição do comportamento e a implementação do comportamento RMI permite que o código que define o comportamento e o código que implementa o comportamento permanecerem separados e rodarem em JVMs separadas
Arquitetura RMI
Interface: definição do serviço remoto implementação do serviço remoto é codificada em uma classe
A chave para se entender o RMI é lembrar que as interfaces definem o comportamento e as classes definem a implementação.
Arquitetura RMI
A classe que implementa o comportamento roda do lado do servidor RMI. A classe que roda no cliente atua como um Proxy para o serviço remoto.
Camadas do RMI
A implementação do RMI é feita em 3 camadas de abstrações
Stub e Skeletons Remote Reference Layer Camada de transporte
Stubs e Skeletons
Esta camada intercepta as chamadas de métodos feitas pelo cliente para que a variável de referência da interface redirecione essas chamadas para o serviço RMI remoto
Remote Reference Layer
Esta camada interpreta e gerencia as referências feitas dos clientes para os objetos do serviço remoto. A conexão do cliente ao servidor é Unicast (uma-para-um).
Camada de transporte é baseada nas conexões TCP/IP
Aplicação
Nomeando Objetos Remotos: Os clientes acham os serviços remotos usando o serviço de nomeação ou diretório (naming or directory) O RMI pode usar diferentes tipos de serviços de diretório RMI Registry, roda na porta 1099 Um programa servidor cria um serviço remoto, primeiramente criando o objeto que implemente aquele serviço. Em seguida ele exporta aquele objeto para o RMI. Quando o objeto é exportado o RMI cria um serviço que aguarda as conexões do cliente. O servidor registra o