GeeksforGeeks

Método Remoto Invocation (RMI) é uma API que permite que um objeto para invocar um método em um objeto que existe em outro espaço de endereçamento, que pode estar na mesma máquina ou em uma máquina remota. Através do RMI, objeto correndo em um JVM presente em um computador (lado cliente) pode invocar métodos em um objeto presente em outro JVM (lado servidor). RMI cria um objeto de servidor remoto público que permite comunicações do lado do cliente e do servidor através de simples chamadas de método no objeto do servidor.

A comunicação entre o cliente e o servidor é tratada usando dois objetos intermediários: O Objeto Stub (do lado do cliente) e o objeto esqueleto (do lado do servidor).

objecto Stub

o objecto stub na máquina cliente constrói um bloco de informação e envia esta informação para o servidor. O bloco é composto por

  • Um identificador de objeto remoto para ser usado
  • nome do Método que deve ser chamado de
  • Parâmetros para a JVM remota

Esqueleto Objeto

O esqueleto do objeto passa a solicitação do objeto de fragmento de código para o objeto remoto. Ele executa as tarefas

  • ele chama o método desejado no objeto real presente no servidor.
  • ele encaminha os parâmetros recebidos do objeto estufado para o método.
    RMI em Java

Passos para implementar a Interface

  1. Definição de uma interface remota
  2. Implementação da interface remota
  3. Criação de Stub e Skeleton objetos a partir da classe de implementação usando o rmic (rmi compilador)
  4. Iniciar o rmiregistry
  5. Criar e executar o aplicativo de servidor do programa
  6. Criar e executar o programa de aplicativo cliente.

Passo 1: Definindo a interface remota
a primeira coisa A fazer é criar uma interface que irá fornecer a descrição dos métodos que podem ser invocados por clientes remotos. Esta interface deve estender a interface remota e o protótipo do método dentro da interface deve lançar o RemoteException.

import java.rmi.*;
public interface Search extends Remote
{
public String query(String search) throws RemoteException;
}



Passo 2: A implementação da interface remota

O próximo passo é implementar a interface remota. Para implementar a interface remota, A classe deve estender-se à classe UnicastRemoteObject de java.pacote rmi. Além disso, um construtor padrão precisa ser criado para lançar o java.socio.Visão remota do seu construtor na classe.

import java.rmi.*;
import java.rmi.server.*;
public class SearchQuery extends UnicastRemoteObject
implements Search
{
SearchQuery() throws RemoteException
{
super();
}
public String query(String search)
throws RemoteException
{
String result;
if (search.equals("Reflection in Java"))
result = "Found";
else
result = "Not Found";
return result;
}
}



Passo 3: Criar o Stub e Skeleton objetos a partir da classe de implementação usando o rmic
O rmic ferramenta é usada para invocar o compilador rmi que cria o Stub e Skeleton objetos. Seu protótipo é
rmic classname. Para o programa acima o seguinte comando precisa ser executado no prompt de comando
rmic SearchQuery

PASSO 4: Iniciar o rmiregistry
Iniciar o serviço de registro de emitindo o seguinte comando no prompt de comando iniciar o rmiregistry

PASSO 5: Criar e executar o aplicativo de servidor do programa
O próximo passo é criar a aplicação de servidor do programa e executá-lo em um prompt de comando.

  • the server program uses createRegistry method of LocateRegistry class to create rmiregistry within the server JVM with the port number passed as argument.
  • o método rebind da classe de nomenclatura é usado para ligar o objeto remoto ao novo nome.

import java.rmi.*;
import java.rmi.registry.*;
public class SearchServer
{
public static void main(String args)
{
try
{
Search obj = new SearchQuery();
LocateRegistry.createRegistry(1900);
Naming.rebind("rmi://localhost:1900"+
"/geeksforgeeks",obj);
}
catch(Exception ae)
{
System.out.println(ae);
}
}
}



Passo 6: Criar e executar o programa de aplicativo cliente
O último passo é criar o aplicativo cliente do programa e executá-lo em um prompt de comando .O método de pesquisa da classe de nomenclatura é usado para obter a referência do objeto Stub.

import java.rmi.*;
public class ClientRequest
{
public static void main(String args)
{
String answer,value="Reflection in Java";
try
{
Search access =
(Search)Naming.lookup("rmi://localhost:1900"+
"/geeksforgeeks");
answer = access.query(value);
System.out.println("Article on " + value +
" " + answer+" at GeeksforGeeks");
}
catch(Exception ae)
{
System.out.println(ae);
}
}
}



Nota: O acima de cliente e servidor, o programa é executado na mesma máquina, de modo localhost é usado. A fim de acessar o objeto remoto a partir de outra máquina, o localhost deve ser substituído pelo endereço IP onde o objeto remoto está presente.
Observações Importantes:

  1. RMI é uma solução java pura para chamadas de procedimento remoto (RPC) e é usado para criar aplicações distribuídas em java.
  2. Stub e Skeleton objects are used for communication between client and server side.

este artigo é contribuído por Aakash Ojha. Se você gosta de GeeksforGeeks e gostaria de contribuir, Você também pode escrever um artigo e enviar seu artigo para [email protected] veja o seu artigo que aparece na página principal dos GeeksforGeeks e ajuda outros Geeks.

Deixe uma resposta

O seu endereço de email não será publicado.