150 likes | 214 Views
a fin a l, o q u e é u m S D ?. •. Os. p r ó x i m o s. s lide s. d e v e r ão. s e r. e x e c u t a d o s u m s e r v i d o r ,. c o n t in u a m e n t e p a r a c ri a r mo s u m c lie n t e e. a m b o s l o c a l m e n t e , p a r a e m r ede ;.
E N D
afinal,oqueéumSD? • Os próximos slides deverão ser executados umservidor, continuamenteparacriarmosumclientee amboslocalmente,para emrede; posteriormente,configurarmos • Para que não hajam problemas de compilação/execuçãoé importantequeocomputador já esteja com as variáveis de ambiente declaradas e 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 implementaainterfaceremotacriada e nopasso1; que • Todos os métodos utilizam a exceção java.rmi.RemoteException;
afinal,oqueéumSD? • • • • Terceiropasso:Implementarumservidor; Crieumaclasseque: Crieumainstânciadoobjetoaserservidor; Registre(rebind)oobjeto(comumnome)noservidor denomesRMIRegistry;
afinal,oqueéumSD? • Terceiropasso: Implementar um servidor [continuação];
afinal,oqueéumSD? • • Quartopasso:Compilaroobjetoremoto; Compiletodasasclasseseinterfacesutilizadas definirainterfacejava.rmi.Remote: para javacFalador.java FaladorImplementacao.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 e (o um proxy) arquivo FaladorImplementacao_Stub.class skeleton FaladorImplementacao_Skel.class para cada objetoremoto(nestecaso,apenasum); • • • RMIC=RMICompiler Useopção-keepsequisermantercódigo-fonte; Execute o rmic sobre as implementações do objeto remotojácompiladas; %rmicFaladorImplementacao; •
afinal,oqueéumSD? • • Sextopasso:Compilareinstalarosclientes; Agora,escrevaumaclasse(ocliente)queiráprocurar, nosistemadenomesjava.rmi.Naming,o(s)objeto(s) remotosdesejado(s): Obtenhaumainstânciaremotadoobjeto(lookup); Useoobjeto,chamandoseusmétodos; • •
afinal,oqueéumSD? • Sextopasso: Compilar e instalar os clientes [continuação];
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) FaladorCliente.class; • O(s)stub(s)FaladorImplementacaoStub.class; • A(s)interface(s)remota(s)Falador.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: registraos %javaFaladorServidor+falamuito “Servidornoar!.” • Neste exemplo serápreciso iniciar o servidor no diretório onde estão os stubs com e o interface Remote adicionandoo “falamuito”; parâmetro nome doobjeto • Isto é para que o RMIRegistryveja o mesmo CLASSPATHqueorestodaaplicação;
afinal,oqueéumSD? • Décimopasso:Executeocliente; • Finalmente,“chame” a máquina virtual Javapara inicializaroCliente.Nesteexemplo,eleprocurapelo serviçodenomeseusaoobjetoremotoviarede; javaFaladorCliente+ip+falamuito
afinal, o que éumSD? Exercícios Implementeoexemplomostrado, passandomensagensdiferentespara o objetoremoto.Tenteacessaroobjeto remotonamáquinadeumcolega