RMI (Remote Method Invocation)

RMI (Remote Method Invocation) je rozhraní API, které poskytuje mechanismus pro vytvoření distribuované aplikace v jazyce java. RMI umožňuje objektu vyvolat metody na objektu běžícím v jiném JVM.

RMI zajišťuje vzdálenou komunikaci mezi aplikacemi pomocí dvou objektů stub a skelet.

porozumění pahýl a kostra

RMI používá pahýl a kostra objekt pro komunikaci se vzdáleným objektem.

vzdálený objekt je objekt, jehož metodu lze vyvolat z jiného JVM. Pojďme pochopit objekty pahýlu a kostry:

pahýl

pahýl je objekt, funguje jako brána pro stranu klienta. Všechny odchozí požadavky jsou směrovány přes něj. Je umístěn na straně klienta a představuje vzdálený objekt. Když volající vyvolá metodu na objektu stub, provede následující úkoly:

  1. iniciuje připojení s dálkovým Virtual Machine (JVM),
  2. To píše a vysílá (maršálové) parametry dálkový ovladač Virtual Machine (JVM),
  3. čeká na výsledek
  4. To čte (unmarshals) vrátí hodnotu nebo výjimkou, a
  5. To konečně vrátí hodnotu volajícímu.

kostra

kostra je objekt, funguje jako brána pro objekt na straně serveru. Všechny příchozí požadavky jsou směrovány přes něj. Když kostra obdrží příchozí požadavek, provede následující úkoly:

  1. přečte parametr pro vzdálenou metodu
  2. vyvolá metodu na skutečném vzdáleném objektu a
  3. zapíše a předá (maršály) výsledek volajícímu.

v Java 2 SDK byl zaveden protokol stub, který eliminuje potřebu koster.stub a skeleton v RMI

Pochopení požadavky pro distribuované aplikace

Pokud nějaké aplikace provádí tyto úkoly, to může být distribuované aplikace.

.

  1. aplikace třeba najít remote method
  2. Je třeba zajistit komunikaci s vzdálené objekty, a
  3. aplikace je potřeba načíst definice třídy pro objekty.

aplikace RMI má všechny tyto funkce, takže se nazývá distribuovaná aplikace.

Java RMI příklad

je dáno 6 kroků k zápisu programu RMI.

  1. Vytvořit vzdálené rozhraní
  2. Poskytují provádění vzdálené rozhraní
  3. Zkompilovat implementace třídy a vytvořit stub a skeleton objektů pomocí rmic nástroj
  4. Spustit registry službu rmiregistry nástroj
  5. Vytvořit a spustit vzdálené aplikace
  6. Vytvoření a spuštění klientské aplikace

RMI Příklad

V tomto příkladu jsme postupovali všech 6 kroků k vytvoření a spuštění rmi aplikace. Klientská aplikace potřebuje pouze dva soubory, vzdálené rozhraní a klientskou aplikaci. V aplikaci rmi klient i server interagují se vzdáleným rozhraním. Klientská aplikace vyvolá metody na objektu proxy, RMI odešle požadavek na vzdálený JVM. Návratová hodnota je odeslána zpět do objektu proxy a poté do klientské aplikace.

RMI příklad

1) vytvořit vzdálené rozhraní

Pro vytvoření vzdáleného rozhraní, rozšíření Dálkového rozhraní a prohlásit RemoteException s všechny metody vzdáleného rozhraní. Zde vytváříme vzdálené rozhraní, které rozšiřuje vzdálené rozhraní. Existuje pouze jedna metoda s názvem add () a deklaruje RemoteException.

2) Poskytněte implementaci vzdáleného rozhraní

nyní poskytněte implementaci vzdáleného rozhraní. Pro zajištění provádění Dálkového rozhraní, musíme

  • Buď prodloužit třída UnicastRemoteObject,
  • nebo použijte exportObject() metodu UnicastRemoteObject třídy

V případě, že jste prodloužení třída UnicastRemoteObject, musí definovat konstruktor, který prohlašuje, RemoteException.

3) Vytvořte pahýl a objekty kostry pomocí nástroje rmic.

dalším krokem je vytvoření pahýlu a kostry objektů pomocí kompilátoru rmi. Nástroj rmic vyvolá kompilátor RMI a vytvoří objekty pahýlu a kostry.

4) Spusťte službu registru pomocí nástroje rmiregistry

Nyní spusťte službu registru pomocí nástroje rmiregistry. Pokud nezadáte číslo portu, použije výchozí číslo portu. V tomto příkladu používáme číslo portu 5000.

5) Vytvořte a spusťte serverovou aplikaci

nyní musí být služby rmi hostovány v procesu serveru. Třída pojmenování poskytuje metody pro získání a uložení vzdáleného objektu. Třída pojmenování poskytuje 5 metod.

veřejná statická java.rmi.Vzdálené vyhledávání (java.lang.String) hází Javu.rmi.NotBoundException, java. net. MalformedURLException, java.rmi.RemoteException; vrací odkaz na vzdálený objekt.
public static void bind (java.lang.Řetězec, java.rmi.Remote) hází java.rmi.Už je to výjimka, java.net.MalformedURLException, java.rmi.RemoteException; váže vzdálený objekt s daným názvem.
public static void unbind (java.lang.String) hází Javu.rmi.RemoteException, java.rmi.NotBoundException, java.net.MalformedURLException; To ničí vzdálený objekt, který je vázán s daným jménem.
public static void rebind (java.lang.Řetězec, java.rmi.Remote) hází java.rmi.RemoteException, java. net. MalformedURLException; váže vzdálený objekt na nový název.
veřejná statická java.lang.Seznam řetězců (java.lang.String) hází Javu.rmi.RemoteException, java.net.MalformedURLException; To vrací pole názvů vzdálené objekty vázané v registru.

V tomto příkladu jsme závazná vzdálený objekt jménem sonoo.

6) Vytvoření a spuštění klienta aplikace

U klienta jsme stále stub objekt lookup() metoda Pojmenování třídy a vyvolání metody na tento objekt. V tomto příkladu spouštíme serverové a klientské aplikace na stejném počítači, takže používáme localhost. Pokud chcete přistupovat ke vzdálenému objektu z jiného počítače, změňte localhost na název hostitele (nebo IP adresu), kde je vzdálený objekt umístěn.

Výstup této RMI příklad

RMIRMI

Smysluplný příklad RMI aplikace s databází

Vezměme scénář, tam jsou dvě aplikace, které běží na různých strojích. Řekněme, že MachineA a MachineB, machineA se nachází ve Spojených státech a MachineB v Indii. MachineB chcete získat seznam všech zákazníků aplikace MachineA.

Pojďme vyvinout aplikaci RMI podle následujících kroků.

1) vytvořte tabulku

nejprve musíme vytvořit tabulku v databázi. Zde používáme databázi Oracle10.

RMI aplikace s databází

2) Vytvořte třídu zákazníků a vzdálené rozhraní

soubor: zákazník. java

Poznámka: třída zákazníků musí být Serializovatelná.

Soubor: Banka. java

3) Vytvořte třídu, která poskytuje implementaci vzdáleného rozhraní

soubor: BankImpl.java

4) Kompilovat třídy rmic nástroj a začít registru službu rmiregistry nástroj

RMI příklad s databází

5) Vytvořit a spustit Server

Soubor: MyServer.java příklad vyvolání vzdálené metody

6) Vytvořte a spusťte soubor klienta

: MyClient.javaskutečný svět příklad rmi