Buscar

0940005_aula4

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

21/03/12 
1 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
2.	
  Tecnologias	
  de	
  programação	
  em	
  sistemas	
  distribuídos	
  	
  
	
  	
  	
  	
  2.1	
  Programação	
  baseada	
  em	
  troca	
  de	
  mensagens	
  
	
  	
  	
  	
  2.2	
  Chamada	
  de	
  procedimentos	
  remotos	
  (RPC)	
  
	
  	
  	
  	
  2.3	
  Invocação	
  de	
  métodos	
  remotos	
  (RMI)	
  	
  	
  	
  
	
  	
  	
  	
  2.4	
  Padronização	
  para	
  objetos	
  distribuídos	
  –	
  Corba	
  
Tema	
  da	
  aula	
  
21/03/12 
2 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  PermiFr	
   que	
   a	
   chamada	
   a	
   um	
   procedimento	
   remoto	
   se	
  
assemelhe	
   ao	
   programador	
   o	
   máximo	
   possível	
   com	
   a	
  
chamada	
  a	
  um	
  procedimento	
  convencional;	
  
o  Tecnologia que foi descoberta por Birrell e Nelson em 1984 
 
Introdução	
  RPC	
  
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
RPC	
  
•  Dado	
  que	
  os	
  procedimentos	
  executam	
  em	
  máquinas	
  
diferentes,	
  os	
  seguintes	
  aspectos	
  devem	
  ser	
  levados	
  em	
  
consideração:	
  
–  A	
  semânFca	
  da	
  passagem	
  de	
  parâmetros;	
  
–  As	
  máquinas	
  podem	
  falhar,	
  causando	
  problemas;	
  
21/03/12 
3 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
•  Dificuldade	
  para	
  transferências	
  de	
  Objetos	
  entre	
  processos	
  
remotos.	
  
•  Obrigatoriedade	
  na	
  uFlização	
  da	
  Interface	
  DefiniFon	
  
Language	
  (IDL).	
  
Desvantagens	
  do	
  RPC	
  
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
•  As	
  interfaces	
  são	
  especificadas	
  num	
  formato	
  independente	
  
de	
  linguagens:	
  a	
  IDL.	
  Isto	
  permite	
  que	
  muitos	
  dos	
  detalhes	
  de	
  
implementação,	
  como	
  o	
  formato	
  das	
  sequências	
  de	
  dados	
  
mulFmídia,	
  a	
  transparência	
  de	
  rede	
  e	
  as	
  dependências	
  de	
  
linguagens 	
  de 	
  programação, 	
  sejam	
  escondidos	
  da	
  
especificação	
  da	
  interface.	
  
RPC	
  -­‐	
  IDL	
  
21/03/12 
4 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
•  A	
  função	
  de	
  um	
  procedimento	
  stub	
  no	
  RPC	
  é	
  semelhante	
  à	
  de	
  
um	
  método	
  proxy.	
  Ele	
  desempacota	
  os	
  argumentos	
  presentes	
  
na	
  mensagem	
  de	
  requisição	
  e	
  chama	
  o	
  procedimento	
  de	
  
serviço	
  correspondente	
  e	
  empacota	
  os	
  valores	
  de	
  retorno	
  
para	
  a	
  mensagem	
  resposta;	
  
•  O	
  processo	
  no	
  servidor	
  contém	
  um	
  despachante	
  junto	
  com	
  o	
  
procedimento	
  stub.	
  Ele	
  seleciona	
  um	
  procedimento	
  stub	
  de	
  
servidor,	
  de	
  acordo	
  com	
  o	
  idenFficador	
  de	
  procedimento	
  
presente	
  na	
  mensagem	
  de	
  requisição;	
  
RPC	
  –	
  CaracterísAcas	
  
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
RPC	
  –	
  Comunicação	
  
21/03/12 
5 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
RPC	
  –	
  Implementação	
  
1.  O	
  procedimento	
  cliente	
  chama	
  localmente	
  o	
  stub	
  cliente;	
  	
  
2.  Stub	
  cliente	
  constrói	
  a	
  mensagem	
  e	
  chama	
  o	
  SO	
  local;	
  
3.  O	
  SO	
  local	
  envia	
  a	
  mensagem	
  ao	
  SO	
  remoto;	
  	
  
4.  O	
  SO	
  Remoto	
  entrega	
  a	
  mensagem	
  ao	
  stub	
  servidor;	
  
5.  O	
  stub	
  servidor	
  desempacota	
  os	
  parâmetros	
  e	
  chama	
  o	
  
procedimento	
  servidor;	
  
6.  O	
  servidor	
  realiza	
  o	
  trabalho	
  retornando	
  o	
  resultado	
  ao	
  stub;	
  	
  
7.  O	
  stub	
  servidor	
  empacota	
  o	
  resultado	
  em	
  uma	
  mensagem	
  e	
  
chama	
  o	
  SO	
  local;	
  	
  
8.  O	
  SO	
  do	
  servidor	
  envia	
  a	
  mensagem	
  ao	
  SO	
  do	
  cliente;	
  	
  
9.  O	
  SO	
  do	
  cliente	
  entrega	
  a	
  mensagem	
  ao	
  stub	
  cliente;	
  
10.  O	
  stub	
  cliente	
  desempacota	
  o	
  resultado	
  e	
  o	
  retorna	
  ao	
  cliente.	
  
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
RMI	
  
21/03/12 
6 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
•  UFlizado	
  na	
  Plataforma	
  JAVA.	
  	
  
•  É	
  uma	
  implementação	
  do	
  RPC.	
  
•  UFlizado	
  para	
  comunicação	
  de	
  um	
  Objeto	
  JAVA	
  com	
  outro.	
  
Chamada	
  de	
  método	
  remota	
  -­‐	
  RMI	
  
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
•  Uma	
  vez	
  que	
  um	
  método	
  ou	
  serviço	
  de	
  um	
  objeto	
  Java	
  é	
  registrado	
  
como	
  sendo	
  remotamente	
  acessível,	
  um	
  cliente	
  pode	
  pesquisar	
  
(“lookup”)	
  esse	
  serviço	
  e	
  receber	
  uma	
  referencia	
  que	
  permita	
  ao	
  
cliente	
  uFlizar	
  esse	
  serviço,	
  isto	
  é,	
  chamar	
  o	
  método;	
  
•  A	
  sintaxe	
  da	
  chamada	
  de	
  um	
  método	
  é	
  idênFca	
  aquela	
  de	
  uma	
  
chamada	
  para	
  um	
  método	
  de	
  outro	
  objeto	
  de	
  um	
  mesmo	
  
programa;	
  
•  O	
  programador	
  não	
  precisa	
  se	
  preocupar	
  com	
  a	
  transmissão	
  dos	
  
dados	
  na	
  rede.	
  A	
  RMI	
  não	
  exige	
  que	
  seja	
  criado	
  uma	
  IDL,	
  porque	
  
todo	
  o	
  código	
  de	
  rede	
  é	
  gerado	
  por	
  classes	
  existentes	
  no	
  programa,	
  
além	
  disso,	
  o	
  RMI	
  por	
  suportar	
  apenas	
  a	
  plataforma	
  Java	
  não	
  
necessita	
  de	
  uma	
  interface	
  padrão.	
  
Introdução	
  RMI	
  
21/03/12 
7 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
•  A	
  camada	
  de	
  stub/skeleton	
  oferece	
  as	
  interfaces	
  que	
  os	
  objetos	
  da	
  aplicação	
  
usam	
  para	
  interagir	
  entre	
  si;	
  
•  A	
  camada	
  de	
  referência	
  remota	
  é	
  o	
  middleware	
  entre	
  a	
  camada	
  de	
  stub/skeleton	
  
e	
  o	
  protocolo	
  de	
  transporte.	
  É	
  nesta	
  camada	
  que	
  são	
  criadas	
  e	
  gerenciadas	
  as	
  
referências	
  remotas	
  aos	
  objetos;	
  
•  A	
  camada	
  do	
  protocolo	
  de	
  transporte	
  oferece	
  o	
  protocolo	
  de	
  dados	
  binários	
  que	
  
envia	
  as	
  solicitações	
  aos	
  objetos	
  remotos	
  pela	
  rede.	
  
Arquitetura	
  do	
  RMI	
  
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Exemplo	
  01	
  
21/03/12 
8 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Implementação	
  da	
  Interface:	
  
o  Importar	
  o	
  pacote	
  rmi	
  
	
  
o  Criar	
  a	
  interface	
  com	
  todos	
  os	
  métodos	
  que	
  serão	
  acessados	
  pelo	
  usuário	
  
	
  
Implementação	
  RMI	
  
import java.rmi.*;!
public interface Calc extends Remote {!
 public int getSoma (int a, int b) throws RemoteException;!
 public int getSubtracao (int a, int b) throws RemoteException;!
 public int getMultiplicacao (int a, int b) throws RemoteException;!
 public double getDivisao (int a, int b) throws RemoteException;!
}!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Implementação	
  do	
  servidor:	
  
o  Importar	
  os	
  pacotes	
  
o  Montar	
  o	
  servidor	
  
	
  
Implementação	
  RMI	
  
import java.rmi.*;!
importjava.rmi.registry.*;!
import java.rmi.server.*;!
public class CalcServer extends UnicastRemoteObject implements Calc{ !
!
!public CalcServer() throws RemoteException{!
 super();!
 }!
!
 !
21/03/12 
9 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Implementação	
  do	
  servidor:	
  
o  Montar	
  o	
  servidor	
  
Implementação	
  RMI	
  
public static void main(String[] args) {!
!try {!
 LocateRegistry.createRegistry(2335);!
! CalcServer f = new CalcServer();!
 Naming.rebind("//localhost:2335/calc", f);!
 System.out.println("Servidor Fibonacci pronto.");!
 }!
 catch (RemoteException re) {!
 System.out.println(" Exception in " + re);!
!
!}!
 catch (Exception e) {!
 e.printStackTrace();!
 }!
 }!
!
 !
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Implementação	
  do	
  servidor:	
  
o  Criar	
  os	
  métodos	
  de	
  acesso	
  do	
  cliente	
  
Implementação	
  RMI	
  
 public int getSoma(int a, int b) throws RemoteException{!
 System.out.println(" Calculando a soma de " + a + " + "+ b);!
 return a + b;!
 }!
 public int getSubtracao(int a, int b) throws RemoteException{!
 System.out.println(" Calculando a subtracao de " + a + " - "+ b);!
 return a - b;!
 }!
 public int getMultiplicacao(int a, int b) throws RemoteException{!
 System.out.println(" Calculando a multiplicacao de " + a + " * "+ b);!
 return a * b;!
 }!
 public double getDivisao(int a, int b) throws RemoteException{!
 System.out.println(" Calculando a divisao de " + a + " / "+ b);!
 return (double) a / b;!
 }!
 !
21/03/12 
10 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Implementação	
  do	
  cliente:	
  
	
  
Implementação	
  RMI	
  
public static void main(String args[]) {!
 Calc calculator; !
 try {!
 calculator = (Calc) Naming.lookup("rmi://localhost:2335/calc"); !
 int a = 3; // n da serie!
 int b = 4;!
 int f = calculator.getSoma(a,b); !
 System.out.println(" A soma eh: " + f);!
 }!
 catch(MalformedURLException e) {!
 System.out.println( "nao eh um URI RMI valida");!
 }!
 catch(RemoteException re) {!
 System.err.println("Objeto Remoto tratou a execucao " + re);!
 }!
 catch(NotBoundException e) {!
 System.out.println( "Nao foi possivel achar o objeto remoto no servidor");!
 }!
}!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
•  A	
  interface	
  pode	
  ser	
  modificada	
  para	
  ter	
  uma	
  interação	
  melhor	
  
com	
  o	
  servidor;	
  
Arquitetura	
  do	
  RMI	
  
21/03/12 
11 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
•  Etapas:	
  
–  Solicitar	
  um	
  Jframe	
  
–  Colocar	
  um	
  JTextField	
  
–  Colocar	
  16	
  jBumons	
  
–  Posicionar	
  todos	
  os	
  componentes	
  da	
  melhor	
  forma	
  
	
  
Arquitetura	
  do	
  RMI	
  
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
•  Etapas:	
  
–  Criar	
  as	
  seguintes	
  variáveis	
  globais:	
  
	
  
–  No	
  construtor	
  da	
  classe	
  colocar:	
  
–  Clicar	
  em	
  cada	
  botão	
  (menos	
  o	
  de	
  igual)	
  e	
  mudar	
  o	
  texto	
  e	
  acionar	
  o	
  método	
  
com	
  dois	
  cliques:	
  
Arquitetura	
  do	
  RMI	
  
private String conta = "";!
private Calc calculator;!
calculator = (Calc) Naming.lookup(!
 "rmi://localhost:2335/calculadora");!
conta = conta + "1";!
jTextField1.setText(conta);!
21/03/12 
12 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
•  Etapas:	
  
–  No	
  botão	
  igual	
  
Arquitetura	
  do	
  RMI	
  
if(conta.contains("+")){!
 try {!
 String[] res = conta.split(" +");!
 jTextField1.setText(""+!
 calculator.getSoma(Integer.parseInt(res[0]), !
 Integer.parseInt(res[2].trim())));!
 } catch (RemoteException ex) {!
 Logger.getLogger(GUI.class.getName()).log!
 (Level.SEVERE, null, ex);!
 }!
}!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
•  Etapas:	
  
–  No	
  botão	
  igual	
  
Arquitetura	
  do	
  RMI	
  
else if(conta.contains("-")){!
 try {!
 String[] res = conta.split(" - ");!
 jTextField1.setText(""+calculator.getSubtracao!
 (Integer.parseInt(res[0]), !
 Integer.parseInt(res[1])));!
 } catch (RemoteException ex) {!
 Logger.getLogger(GUI.class.getName()).log!
 (Level.SEVERE, null, ex);!
 }!
}!
 !
21/03/12 
13 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
•  Etapas:	
  
–  No	
  botão	
  igual	
  
Arquitetura	
  do	
  RMI	
  
 else if(conta.contains("x")){!
 try {!
 String[] res = conta.split(" x ");!
 jTextField1.setText(""+calculator.getMultiplicacao!
 (Integer.parseInt(res[0]), !
 Integer.parseInt(res[1])));!
 } catch (RemoteException ex) {!
 Logger.getLogger(GUI.class.getName()).log!
 (Level.SEVERE, null, ex);!
 }!
}!
 !
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
•  Etapas:	
  
–  No	
  botão	
  igual	
  
Arquitetura	
  do	
  RMI	
  
else{!
 try {!
 String[] res = conta.split(" / ");!
 jTextField1.setText(""+calculator.getDivisao!
 (Integer.parseInt(res[0]), !
 Integer.parseInt(res[1])));!
 } catch (RemoteException ex) {!
 Logger.getLogger(GUI.class.getName()).log!
 (Level.SEVERE, null, ex);!
 }!
}!
conta = "";!
 !
 !
21/03/12 
14 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Fim	
  aula.....	
  
ricardoboaventura@iftm.edu.br

Outros materiais