GeeksforGeeks

Remote Method Invocation (RMI) je API, které umožňuje objektu k vyvolání metody na objekt, který existuje v jiném adresním prostoru, který by mohl být na stejném počítači nebo ve vzdáleném počítači. Prostřednictvím RMI, objekt běží v JVM přítomných na počítači (na straně Klienta) pro vyvolání metody na objekt v jiné JVM (na straně Serveru). RMI vytváří veřejný objekt vzdáleného serveru, který umožňuje komunikaci na straně klienta a serveru pomocí jednoduchých volání metod na objektu serveru.

Pracovní RMI

komunikace mezi klientem a serverem je řešen pomocí dvou mezilehlých objektů: Stub objektu (na straně klienta) a Kostra objektu (na straně serveru).

Stub Object

objekt stub na klientském počítači vytvoří informační blok a odešle tyto informace na server. Blok se skládá z

  • identifikátor vzdáleného objektu, který chcete použít
  • název Metody, která má být vyvolána
  • Parametry se vzdáleným JVM

Kostra Objektu

kostra objektu předá žádost stub objektu na vzdálený objekt. Provádí následující úkoly

  • volá požadovanou metodu na skutečném objektu přítomném na serveru.
  • předává parametry přijaté z objektu pahýlu metodě.
    v jazyce Java RMI

Kroky implementovat Rozhraní

  1. Definování vzdáleného rozhraní
  2. Provádění vzdálené rozhraní
  3. Vytváření Stub a Skeleton objekty z implementace třídy pomocí rmic (rmi complier)
  4. Start rmiregistry
  5. Vytvořit a spustit server aplikační program
  6. Vytvořit a spustit klientský aplikační program.

Krok 1: Definování vzdáleného rozhraní
první věc, kterou musíte udělat, je vytvořit rozhraní, které poskytne popis metod, které mohou být vyvolány vzdálenými klienty. Toto rozhraní by mělo rozšířit vzdálené rozhraní a prototyp metody v rozhraní by měl hodit výjimku RemoteException.

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



Krok 2: Provádění vzdálené rozhraní

další krok je implementovat vzdálené rozhraní. Chcete-li implementovat vzdálené rozhraní, třída by se měla rozšířit na UnicastRemoteObject třídy java.balíček rmi. Také je třeba vytvořit výchozí konstruktor, aby hodil Javu.rmi.RemoteException z nadřazeného konstruktoru ve třídě.

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



Krok 3: Vytvoření Stub a Skeleton objekty z implementace třídy pomocí rmic
rmic nástroj se používá k vyvolání rmi kompilátor, který vytváří Stub a Skeleton objekty. Jeho prototyp je
rmic classname. Pro výše uvedený program následující příkaz musí být proveden na příkazovém řádku
rmic SearchQuery

KROK 4: Start rmiregistry
Spustit registry service vydáním následující příkaz na příkazovém řádku start rmiregistry

KROK 5: Vytvořit a spustit server aplikační program
další krok je vytvořit server, aplikační program a spustit jej na samostatný příkazový řádek.

  • server program používá createRegistry metoda LocateRegistry třídě vytvořit rmiregistry v rámci serveru JVM s číslo portu předáme jako argument.
  • metoda rebind třídy pojmenování se používá k navázání vzdáleného objektu na nový název.

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



Krok 6: Vytvoření a spuštění klientské aplikace program
posledním krokem je vytvoření aplikace klient program a spustit jej na samostatný příkazový řádek .Metoda vyhledávání třídy pojmenování se používá k získání odkazu na objekt pahýlu.

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



Poznámka: výše uvedený klient a server program je spuštěn na stejném stroji, takže localhost používá. Chcete-li získat přístup ke vzdálenému objektu z jiného počítače, localhost je třeba nahradit IP adresou, kde je vzdálený objekt přítomen.
Důležitá Pozorování:

  1. RMI je čistě java řešení pro vzdálené volání procedur (RPC) a používá se k vytvoření distribuované aplikace v Javě.
  2. objekty pahýl a kostra se používají pro komunikaci mezi klientem a serverem.

tento článek je přispěl Aakash Ojha. Pokud se vám líbí GeeksforGeeks a chtěli byste přispět, můžete také napsat článek a pošlete své článek [email protected] Viz váš článek se objeví na GeeksforGeeks hlavní stránce a pomoci jiných Mágů.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.