Você está na página 1de 17

Sistemas Distribu dos: Conceitos e Projeto Java RMI

Francisco Jos e da Silva e Silva


Laborat orio de Sistemas Distribu dos (LSD) Departamento de Inform atica / UFMA http://www.lsd.deinf.ufma.br

19 de agosto de 2010

Francisco Silva (UFMA/LSD)

SD: Conceitos e Projeto

19 de agosto de 2010

1 / 17

Introdu c ao a Java RMI


Sistemas distribu dos requerem que aplica c oes executando em diferentes espa cos de endere camento, potencialmente em m aquinas diferentes, sejam capazes de trocar dados; Java RMI e o mecanismo que permite um objeto invocar um m etodo de outro objeto que existe em outro espa co de endere camento; A invoca c ao de m etodo remoto permite que um objeto executando sobre uma determinada JVM invoque m etodos sobre um objeto executando sobre outra JVM.
Fontes: http://java.sun.com/docs/books/tutorial/rmi/overview.html ou http://www.guj.com.br/java.tutorial.artigo.37.1.guj
Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 2 / 17

Introdu c ao a Java RMI


A deni c ao do comportamento e a implementa c ao do comportamento s ao conceitos separados: a deni c ao do servi co remoto e codicado usando uma interface (interface) Java, e a implementa c ao do servi co remoto e codicado usando uma classe (class); A arquitetura RMI torna o uso de objetos Java distribu dos similar ao uso de objetos Java locais = transpar encia de acesso.

Francisco Silva (UFMA/LSD)

SD: Conceitos e Projeto

19 de agosto de 2010

3 / 17

Implementa c ao Java RMI


Camada Stub e Skeleton: intercepta as chamadas de m etodos feitas pelo cliente para que a vari avel de refer encia da interface redirecione essas chamadas para o servi co RMI remoto; Camada Remote Reference Layer: interpreta e gerencias refer encias feitas dos clientes para os objetos do servi co remoto. A conex ao do cliente ao servidor e Unicast (um-para-um); Camada de transporte: e baseada nas conex oes TCP/IP entre as maquinas em uma rede.

Francisco Silva (UFMA/LSD)

SD: Conceitos e Projeto

19 de agosto de 2010

4 / 17

Argumentos e Valores de Retorno

Podem ser passados de ou para um m etodo remoto qualquer entidade que seja uma inst ancia de um tipo primitivo, objeto remoto ou objeto serializ avel (que implementa a interface java.io.Serializable; Alguns objetos n ao atendem a estes crit erios, normalmente por encapsular informa c ao que faz sentido somente em um u nico espa co de endere camento, como threads e descritores de arquivos; Muitas classes core Java, incluindo as constantes dos pacotes java.lang e java.util implementam a interface Serializable.

Francisco Silva (UFMA/LSD)

SD: Conceitos e Projeto

19 de agosto de 2010

5 / 17

Objetos Remotos e Locais

Objetos remotos s ao passados por refer encia; Objetos locais s ao passados por c opia, utilizando-se o mecanismo de serializa c ao; Por padr ao, todos os campos s ao copiados excetos aqueles marcados como est aticos ou transientes.

Francisco Silva (UFMA/LSD)

SD: Conceitos e Projeto

19 de agosto de 2010

6 / 17

Localizando o Servi co Remoto RMI

Pode-se utilizar diferentes tipos de servi cos de diret orio, incluindo o JNDI (Java Naming and Directory Interface); O pr oprio RMI inclue um simples servi co, chamado de RMI Registry; Ele executa em cada maquina que hospeda o servi co remoto, por deni c ao na porta 1099;

Francisco Silva (UFMA/LSD)

SD: Conceitos e Projeto

19 de agosto de 2010

7 / 17

Localizando o Servi co Remoto RMI


O servidor:
Cria um servi co remoto, instanciando o objeto que implemente aquele servi co; Exporta aquele objeto para o RMI. Quando o objeto e exportado o RMI cria um servi co que aguarda as conex oes do cliente; Registra o objeto no RMI Registry, com um nome p ublico.

O Cliente:
O RMI Registry e acessado atrav es da classe est atica Naming; Ela prov em o m etodo lookup(), que aceita a URL que especica o nome do servidor e o nome do servi co desejado e retorna uma refer encia remota para o objeto do servi co; A URL e formada como seguinte: rmi://<host_name>[:port_number]/<service_name>

Francisco Silva (UFMA/LSD)

SD: Conceitos e Projeto

19 de agosto de 2010

8 / 17

Passos para o Desenvolvimento do Servidor

Criar a interface do servidor, que deve estender a classe Remote. Todo m etodo deve lan car a exce c ao RemoteException; Implementar a interface criada; Escrever o c odigo que instancia a implementa c ao do servidor, exporta o objeto para o RMI e o registra junto ao servi co de nomes da tecnologia Java (RMI registry).

Francisco Silva (UFMA/LSD)

SD: Conceitos e Projeto

19 de agosto de 2010

9 / 17

Servi co de Nomes RMI Registry


LocateRegistry: classe respons avel por criar o stub para acesso ao servi co de registro (Registry); Alguns M etodos:
createRegistry(int port): cria e exporta uma inst ancia de Registry em uma m aquina local que aceita pedidos em uma porta espec ca; getRegistry(): retorna uma refer encia para o objeto remoto Registry para a m aquina local no porta 1099, que e a porta padr ao do servi co de registro; getRegistry(String host): retorna um refer encia para o objeto remoto Registry na m aquina espec ca na porta 1099.

Francisco Silva (UFMA/LSD)

SD: Conceitos e Projeto

19 de agosto de 2010

10 / 17

Servi co de Nomes RMI Registry


M etodos da interface Registry: void bind(String name, Remote obj): associa a refer encia remota ao nome especicado; String[] list(): retorna um array dos nomes registrados; Remote lookup(String name): retorna a refer encia remota correspondente ao nome especicado; void rebind(String name, Remote obj): substitui a amarra c ao para o nome especado, associando-o ` a refer encia remota especicada; void unbind(String name): remove a amarra c ao para o nome especicado.
Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 11 / 17

Exemplo de C odigo

Exemplo de c odigo: calculadora Calculator.java CalculatorImpl.java CalculatorServer.java

Francisco Silva (UFMA/LSD)

SD: Conceitos e Projeto

19 de agosto de 2010

12 / 17

Implementando o Cliente

Obter uma refer encia ao objeto remoto atrav es de uma chamada ao m etodo lookup(servidor) da interface Registry; Basta agora utilizar o objeto remoto como se fosse local.

Francisco Silva (UFMA/LSD)

SD: Conceitos e Projeto

19 de agosto de 2010

13 / 17

Exemplo de C odigo

Exemplo de c odigo: cliente da calculadora. CalculatorClient.java

Francisco Silva (UFMA/LSD)

SD: Conceitos e Projeto

19 de agosto de 2010

14 / 17

Segundo Exemplo: Novas Funcionalidades do Servidor de Cota co es

Consultar a cota c ao de uma moeda; Cadastrar uma nova cota c ao para uma moeda; Alterar a cota c ao de uma moeda; Excluir a cota c ao de uma moeda.

Francisco Silva (UFMA/LSD)

SD: Conceitos e Projeto

19 de agosto de 2010

15 / 17

Segundo Exemplo de C odigo

Servidor RMI do Sistema de Cota c oes:


BDCotacoes.java BDCotacoesImpl.java ServidorBDCotacoes.java

Cliente RMI do Sistema de Cota c oes:


ClienteBDCotacoes.java

Francisco Silva (UFMA/LSD)

SD: Conceitos e Projeto

19 de agosto de 2010

16 / 17

Terceiro Exemplo de C odigo

Compute Engine.

Francisco Silva (UFMA/LSD)

SD: Conceitos e Projeto

19 de agosto de 2010

17 / 17

Você também pode gostar