130 likes | 235 Views
a fin a l, o q u e é u m S D ?. •. N e s t a a ul a , c om ple m e n t an d o o s c o n c ei t o s q u e v i m o s. n as. a ul as. a n t eri o r e s. ,. v a m o s. p r a t i c ar. a. p r o g r a m a ç ão d e l a b o r at ó ri o u t i l i z a nd o u m a s eq u en c i a
E N D
afinal,oqueéumSD? • Nestaaula,complementandoosconceitosquevimos nas aulas anteriores , vamos praticar a programaçãodelaboratórioutilizandoumasequencia de10passosparaimplementaroRMI; • Os próximos slides para deverão ser executados continuamente servidor,ambos criarmos um cliente e um localmente,paraposteriormente,na partequatrodessaaula rede; configurarmosem • Para que não hajam problemas de compilação/execuçãoéimportante queocomputador jáestejacomasvariáveisdeambientedeclaradase configuradas;
afinal,oqueéumSD? • • • • • • • • • • • Os10passosparacriarmosnossosegundo Definirainterfaceremota; Implementaroobjetoremoto; Implementarumservidorparaoobjeto; Compilaroobjetoremoto; Gerarstubseskeletonscomrmic; Escrever,compilareinstalarocliente; Instalarostubnocliente; RMI: Iniciar Iniciar Iniciar o o o RMIRegistrynoservidor; servidordeobjetos; clientequevaiacessaroservidor;
afinal,oqueéumSD? • • Primeiropasso:Definirainterfaceremota; Declaretodos os métodos que o programa cliente poderáchamarremotamenteem estendadejava.rmi.Remote; umainterface que • Todos os métodos devem declarar throws java.rmi.RemoteException; Istodeveserfeitoparacadaobjetoqueseráacessível atravésdarede; •
afinal,oqueéumSD? • • Segundopasso:Implementaroobjetoremoto; Cadaobjetoremotoéumaclassequeestendeaclasse java.rmi.server.UnicastRemoteObject e que implementaainterfaceremotacriadanopasso1; • Todosos métodos declaram utilizar a exceção para evitarerroscomjava.rmi.RemoteException;
afinal,oqueéumSD? • • • • Terceiropasso:Implementarumservidor; Crieumaclasseque: Crieumainstânciadoobjetoaserservidor; Registre(rebind)oobjeto(comumnome)noservidor denomesRMIRegistry;
afinal,oqueéumSD? • • Quartopasso:Compilaroobjetoremoto; Compiletodasasclasseseinterfacesutilizadas definirainterfacejava.rmi.Remote: para javacMensagem_IF.java ServicoDeMensagens.java • Observação:noEclipse,estepassonãoétãocrítico. Bastaapenassalvarosarquivosqueosbytecodes.class serãogerados(facilmente)deformaautomática;
afinal,oqueéumSD? • • • Quintopasso:GerarStubseSkeletons; UseaferramentadoJ2SDK:rmic Será gerado um arquivo stub (o proxy) skeleton objeto ServicoDeMensagens_Stub.class ServicoDeMensagens_Skel.class remoto(nestecaso,apenasum); eumarquivo para cada • • • RMIC=RMICompiler Useopção-keepsequisermantercódigo-fonte; Execute o rmic sobre as implementações do objeto remotojácompiladas; %rmicServicoDeMensagens; •
afinal,oqueéumSD? • • Sextopasso:Compilareinstalarosclientes; Agora,escrevaumaclasse(ocliente)queiráprocurar, nosistemadenomesjava.rmi.Naming,o(s)objeto(s) remotosdesejado(s): Obtenhaumainstânciaremotadoobjeto(lookup); •
afinal,oqueéumSD? • Sétimopasso:Instalarosstubsnocliente; • Distribua os clientes para as máquinas-cliente. A distribuiçãodeveconter: • Classe(s) que implementa(m) o(s) cliente(s) Cliente.class; • O(s)stub(s)ServicoDeMensagens_Stub.class; • A(s)interface(s)remota(s)Mensagem_IF.class;
afinal,oqueéumSD? • Oitavopasso:IniciaroRMIRegistry noWindows; %startrmiregistry • ORMIRegistryfica"calado"quandoestáexecutando. NesteexemploseráprecisoiniciaroRMIRegistryno diretórioondeestãoosstubseinterfaceRemota; • Isto é, para que o RMIRegistry“veja” o mesmo CLASSPATHqueorestodaaplicação;
afinal,oqueéumSD? • • Nonopasso:Iniciaroservidordeobjetos; Oservidoréumaaplicaçãoexecutávelque objetosnoRMIRegistry.Rodeaaplicação: registra os %javaServicoDeMensagens “Servidordemensagensestánoar!.” • Neste exemplo será precisoiniciar o servidor no diretórioondeestãoosstubseinterfaceRemote; • Isto é para que o RMIRegistryveja o mesmo CLASSPATHqueorestodaaplicação;
afinal, oqueéumSD? • Décimo passo:Executeocliente; • Finalmente,“chame” a máquina virtual Javapara inicializaroCliente.Nesteexemplo,eleprocurapelo serviçodenomeseusaoobjetoremotoviarede; JavaCliente
afinal, o que éumSD? Exercícios Implementeoexemplomostrado, passandomensagensdiferentespara o objetoremoto.Tenteacessaroobjeto remotonamáquinadeumcolega