az RMI a Remote Method Invocation rövidítése. Ez egy olyan mechanizmus, amely lehetővé teszi az egyik rendszerben (JVM) tartózkodó objektum számára, hogy hozzáférjen/meghívjon egy másik JVM-en futó objektumot.
az RMI elosztott alkalmazások építésére szolgál; távoli kommunikációt biztosít a Java programok között. A java csomagban található.rmi.
egy RMI alkalmazás architektúrája
egy RMI alkalmazásban két programot írunk, egy szerverprogramot (a szerveren található) és egy ügyfélprogramot (a kliensen található).
-
a kiszolgálóprogramon belül létrejön egy távoli objektum, és az objektum hivatkozása elérhetővé válik az ügyfél számára (a beállításjegyzék segítségével).
-
az ügyfélprogram kéri a szerveren lévő távoli objektumokat, és megpróbálja meghívni a módszereit.
az alábbi ábra egy RMI alkalmazás architektúráját mutatja.
most beszéljük meg az architektúra összetevőit.
-
szállítási réteg – ez a réteg köti össze az Ügyfelet a kiszolgálóval. Kezeli a meglévő kapcsolatot, és új kapcsolatokat is létrehoz.
-
csonk − a csonk a távoli objektum reprezentációja (proxy) az ügyfélnél. Az ügyfélrendszerben található; átjáróként működik az ügyfélprogram számára.
-
Skeleton-ez az objektum, amely lakik a szerver oldalon. a csonk kommunikál ezzel a csontvázzal, hogy átadja a kérést a távoli objektumnak.
-
RRL (Remote Reference Layer) – ez a réteg kezeli az ügyfél által a távoli objektumra tett hivatkozásokat.
egy rmi alkalmazás működése
a következő pontok összefoglalják az RMI alkalmazás működését−
-
amikor az ügyfél hívást kezdeményez a távoli objektumra, azt a csonk fogadja, amely végül továbbítja ezt a kérést az RRL-nek.
-
amikor az ügyféloldali RRL megkapja a kérést, meghívja a remoteRef objektum invoke() metódusát. Átadja a kérést a szerver oldali RRL-nek.
-
a szerver oldali RRL továbbítja a kérést a csontváznak (proxy a szerveren), amely végül meghívja a szükséges objektumot a szerveren.
-
az eredményt egészen visszaadják az ügyfélnek.
amikor egy ügyfél olyan metódust hív meg, amely elfogadja a paramétereket egy távoli objektumon, a paraméterek egy üzenetbe kerülnek, mielőtt a hálózaton keresztül küldenék őket. Ezek a paraméterek lehetnek primitív típusúak vagy objektumok. Primitív típus esetén a paramétereket összerakjuk, és egy fejlécet csatolunk hozzá. Abban az esetben, ha a paraméterek objektumok, akkor sorosítják őket. Ezt a folyamatot rendezésnek nevezik.
a szerver oldalon a csomagolt paraméterek szétválasztásra kerülnek, majd a szükséges metódust meghívják. Ez a folyamat az úgynevezett unmarshalling.
RMI Registry
az RMI registry egy névtér, amelyen az összes kiszolgálóobjektum el van helyezve. Minden alkalommal, amikor a szerver létrehoz egy objektumot, regisztrálja ezt az objektumot a RMIregistry (bind() vagy reBind() módszerekkel). Ezeket a bind name néven ismert egyedi név használatával regisztrálják.
távoli objektum meghívásához az ügyfélnek szüksége van az objektum hivatkozására. Ekkor az ügyfél lekéri az objektumot a rendszerleíró adatbázisból a kötési nevével (a lookup() módszerrel).
az alábbi ábra a teljes folyamatot ismerteti –
az RMI céljai
az alábbiakban bemutatjuk az RMI céljait−
- az alkalmazás összetettségének minimalizálása.
- a típusbiztonság megőrzése érdekében.
- elosztott szemétgyűjtés.
- minimalizálja a különbséget a helyi és a távoli objektumok között.