Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Java ::: RMI - Remote Method Invocation ::: Passos Iniciais

O que é RMI (Remote Method Invocation) e como usá-lo em suas aplicações Java

Quantidade de visualizações: 10294 vezes
A tecnologia RMI (Remote Method Invocation) fornece um framework para o desenvolvimento de sistemas distribuídos em Java. Ao usarmos RMI, um objeto Java em um sistema pode chamar (invocar) um método de outro objeto em um outro sistema na rede. Um sistema distribuído em Java pode ser visto como uma coleção de objetos distribuídos pela rede e que colaboram entre si.

O RMI (no pacote java.rmi) é uma API de alto-nível construída em cima de sockets. A programação a nível de soquetes permite a passagem de dados entre computadores através de soquetes. Aqui entra o ponto interessante do RMI. Conseguimos, por meio desta tecnologia, não somente passar dados entre diferentes sistemas, mas também invocar métodos em objetos remotos. Objetos remotos podem ser manipulados como se os mesmos residissem na máquina local. A transmissão de dados entre as diferentes máquinas é gerenciada pela JVM (Java Virtual Machine) de forma transparente.

De alguma forma, o RMI é uma evolução da arquitetura cliente/servidor. Um cliente é um computador que efetua requisições por serviços, e um servidor é um componente que "entrega" os serviços solicitados. Assim como na arquitetura cliente/servidor, o RMI mantém a noção de clientes e servidores, mas a abordagem do RMI é mais flexível que o paradigma cliente/servidor. Assim, um componente RMI pode agir tanto como um cliente quanto como um servidor. Tudo dependerá do cenário da aplicação.

O funcionamento do RMI se baseia em objetos remotos, ou seja, objetos que são acessíveis a partir de um servidor remoto. Para que um objeto possa ser invocado remotamente, ele deve ser definido em uma interface Java acessível tanto ao servidor quanto ao cliente. Além disso, a interface deve extender a interface java.rmi.Remote. Assim como acontece com a interface java.io.Serializable, a interface java.rmi.Remote é uma interface de marcação que não contém constantes nem métodos. Ela é usada somente para identificar objetos remotos.

Listamos abaixo os componentes chaves da arquitetura RMI:

Interface de objeto de servidor: Uma sub-interface de java.rmi.Remote que define os métodos para o objeto de servidor.

Implementação de servidor: Uma classe que implementa a interface de objeto remoto.

Objeto de servidor: Uma instância da implementação de servidor.

Registro RMI (RMI registry): Um utilitário que registra os objetos remotos e fornece serviços de nomes (naming services) para a localização de objetos (lookup).

Programa cliente: Um programa que invoca (chama) os métodos no objeto de servidor remoto.

Stub (canhoto) de servidor: Um objeto que reside na máquina cliente e serve como um substituto para o objeto de servidor remoto.

Esqueleto de servidor: Um objeto que reside na máquina servidor e comunica com o stub e o objeto de servidor real.

O funcionamento do RMI se dá da seguinte forma:

a) Um objeto de servidor é registrado com o RMI registry;

b) Um cliente pesquisa (lookup) através do RMI registry um objeto remoto;

c) Se o objeto remoto for localizado, seu stub é retornado para o cliente.

O objeto remoto pode ser usado da mesma forma que um objeto local. A comunicação entre o cliente e o servidor é gerenciada por meio do stub e do esqueleto.

A implementação da arquitetura RMI é complexa. A boa notícia é que ela fornece um mecanismo que nos libera da tarefa de ter que escrever código tedioso para gerenciar passagens de parâmetros e chamadas de métodos remotos. A idéia básica é usar duas classes auxiliares (helper classes) conhecidas como stub e esqueleto (skeleton) para gerenciar a comunicação entre o cliente e o servidor.

O stub e o esqueleto são gerados automaticamente pelo JDK. O stub reside na máquina cliente. Ele contém todas as informações de referência que o cliente precisa saber a respeito do objeto servidor. Quando um cliente invoca um método em um objeto servidor, ele na verdade chama um método que está encapsulado no stub. O stub é responsável pelo envio de parâmetros para o servidor e pelo recebimento dos resultados do servidor e encaminhando-os para o cliente.

O esqueleto comunica com o stub a partir do servidor. O esqueleto recebe parâmetros do cliente, passa-os para o servidor para execução, e retorna o resultado para o stub.

Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 30 usuários muito felizes estudando em nosso site.