GeeksforGeeks

Remote Method Invocation (RMI) er en API, der gør det muligt for et objekt at påberåbe sig en metode på et objekt, der findes i et andet adresserum, som kunne være på den samme maskine eller på en fjernmaskine. Gennem RMI kan objekt, der kører i en JVM, der findes på en computer (klientside), påberåbe sig metoder på et objekt, der findes i en anden JVM (serverside). RMI opretter et offentligt eksternt serverobjekt, der muliggør klient-og serversidekommunikation gennem enkle metodeopkald på serverobjektet.

arbejde af RMI

kommunikationen mellem klient og server håndteres ved hjælp af to mellemliggende objekter: Stub objekt (på klientsiden) og skelet objekt (på serversiden).

Stub Object

stub-objektet på klientmaskinen bygger en informationsblok og sender disse oplysninger til serveren. Blokken består af

  • en identifikator for det fjernobjekt, der skal bruges
  • Metodenavn, som skal påberåbes
  • parametre til fjernbetjeningen JVM

Skeletobjekt

skeletobjektet overfører anmodningen fra stubobjektet til fjernobjektet. Det udfører følgende opgaver

  • det kalder den ønskede metode på det rigtige objekt, der findes på serveren.
  • det videresender parametrene modtaget fra stub-objektet til metoden.
     RMI i Java

trin til implementering af Interface

  1. definition af en fjerngrænseflade
  2. implementering af fjerngrænsefladen
  3. oprettelse af Stub-og Skeletobjekter fra implementeringsklassen ved hjælp af rmic (rmi complier)
  4. Start rmiregistry
  5. Opret og udfør serverapplikationsprogrammet
  6. Opret og udfør programmet klient ansøgning program.

Trin 1: Definition af fjerngrænsefladen
den første ting at gøre er at oprette en grænseflade, der giver beskrivelsen af de metoder, der kan påberåbes af fjernklienter. Denne grænseflade skal udvide Fjerngrænsefladen, og metodeprototypen inden for grænsefladen skal kaste Fjernundtagelsen.

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



Trin 2: implementering af fjerngrænsefladen

det næste trin er at implementere fjerngrænsefladen. For at implementere fjerngrænsefladen skal klassen udvides til UnicastRemoteObject-klassen af java.RMI pakke. Der skal også oprettes en standardkonstruktør for at kaste java.rmi.Fjernundtagelse fra sin overordnede konstruktør i klassen.

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;
}
}



Trin 3: Oprettelse af Stub-og Skeletobjekter fra implementeringsklassen ved hjælp af rmic
rmic-værktøjet bruges til at påberåbe sig RMI-kompilatoren, der skaber Stub-og Skeletobjekter. Dens prototype er
rmic classname. For ovenstående program skal følgende kommando udføres ved kommandoprompten
rmic-søgeforespørgsel

trin 4: Start rmiregistry
Start registry-tjenesten ved at udstede følgende kommando ved kommandoprompten start rmiregistry

trin 5: Opret og udfør serverapplikationsprogrammet
det næste trin er at oprette serverapplikationsprogrammet og udføre det på en separat kommandoprompt.

  • serverprogrammet bruger createRegistry metode til LocateRegistry klasse til at oprette rmiregistry inden for serveren JVM med portnummeret bestået som argument.
  • rebind-metoden til Navngivningsklasse bruges til at binde fjernobjektet til det nye navn.

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);
}
}
}



Trin 6: Opret og udfør klientapplikationsprogrammet
det sidste trin er at oprette klientapplikationsprogrammet og udføre det på en separat kommandoprompt .Opslagsmetoden til Navngivningsklasse bruges til at få referencen til Stubobjektet.

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);
}
}
}



Bemærk: ovenstående klient – og serverprogram udføres på den samme maskine, så localhost bruges. For at få adgang til fjernobjektet fra en anden maskine skal localhost erstattes med den IP-adresse, hvor fjernobjektet er til stede.
Vigtige Observationer:

  1. RMI er en ren java-løsning til Fjernprocedureopkald (RPC) og bruges til at oprette distribueret applikation i java.
  2. Stub og skelet objekter bruges til kommunikation mellem klient og server side.

denne artikel er bidraget af Aakash Ojha. Hvis du kan lide GeeksforGeeks og gerne vil bidrage, kan du også skrive en artikel og sende din artikel til [email protected] se din artikel vises på GeeksforGeeks hovedsiden og hjælpe andre nørder.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.