SISTEMAS DISTRIBUÍDOS RMI Slide 5 Nielsen C. Damasceno RMI • O RMI (invocação de método remoto) é a forma como o conceito de RPC é implementado na linguagem Java. • Para a comunicação, o RMI possui três camadas, sendo elas: – Stub/Skeleton: é invocado primeiro, recebendo os objetos a serem enviados e serializando-os (convertendo para bytes). – RRL – Camada de referência remota: cada lado possui a sua, sendo que ela é responsável por montar a mensagem de envio/resposta entre cliente e servidor. – Transporte: camada utilizada para envio das informações via rede. RMI Exemplo • Neste exemplo, nós vamos criar uma aplicação em RMI. • Para isso será definida uma interface que contém um método remoto, chamado montaMensagem. O servidor irá implementar o método remoto e o disponibilizará aos clientes. Exemplo • O servidor irá se registrar no binder. • O cliente vai procurar, no binder, o objeto que possui esta funcionalidade através de seu nome e executará o método correspondente. • Criaremos quatro arquivos em Java: – Servidor.java – ServidorImpl.java – ServidorPrincipal.java – Cliente.java Exemplo • O projeto Servidor terá os seguintes arquivos: – Servidor.java – ServidorImpl.java – ServidorPrincipal.java • O projeto Cliente terá os seguintes arquivos: – Servidor.java – Cliente.java Exemplo • Servidor.java: arquivo que contém a interface com a assinatura do método remoto a ser disponibilizado. A interface deve estar no projeto do servidor e do cliente. • ServidorImpl.java: classe que implementa o método remoto. Este arquivo estará somente no servidor. • ServidorPrincipal.java: classe que contém o método main do servidor, sendo responsável por registrar o serviço no binder. Este arquivo estará somente no servidor. • Cliente.java: classe que contém a lógica do cliente. Este arquivo estará somente no cliente. Servidor.java ServidorImpl.java ServidorPrincipal.java Cliente.java Exercícios http://paginas.fe.up.pt/~eol/AIAD/aulas/JINIdocs/rmi2.html