/** A Távoli metódushívás fejezet példaprogramjai.
A távoli eljáráshívás egy kellően magas szintű eszköz ahhoz, hogy a procedurális programtervezési módszerekkel együtt a gyakorlatban is alkalmazzák programok több komponensre bontására (egy probléma különféle részfeladatainak megvalósítását más és más számítógépekre bízva), de a Java környezetben történő alkalmazhatóságát még mindig akadályozzák a Java nyelv és a távoli eljáráshívás filozófiájában levő eltérések: míg a Java nyelv egy objektumorientált tervezési módszer alkalmazását feltételezi a program készítőjétől, addig a távoli eljáráshívás egy olyan eszköz, amely a procedurális modellhez illeszkedik. Szükség van tehát egy olyan eszközre, amely segítségével az objektumorientált tervezési módszerekhez illeszkedően bonthatjuk fel az alkalmazásunkat úgy, hogy az számítógépek hálózatára telepítve is működőképes legyen (itt az alkalmazást lényegét tekintve hálózaton keresztül kommunikálni képes objektumok alkotják). Jelenleg a Java környezetben kétféle eszköz is található, amely e probléma megoldását szolgálja: az egyik a Java CORBA interfésze, a másik pedig a Java távoli metódushívási rendszere.
Tartalomjegyzék a hivatkozott referenciákkal és felhasznált képekkel:
A távoli metódushívás modellje
A távoli metódushívás eszközei
A paraméterátadás kérdései
A kliens és a szerver összekapcsolódása
Tipikus hibák távoli metódushívás során
Távoli metódushívás Java környezetben
Egy távoli objektum implementációja
Paraméterátadás
A Java RMI viselkedése kommunikációs hibáknál
A kliens- és a szervercsonk összekapcsolása
Távoli objektumok megnevezése
Távoli referenciák elérése
A registry implementációja
A példaprogramunk befejezése
Távoli metódusok párhuzamos környezetben
Távoli objektumok osztott szemétgyűjtése
Osztott szemétgyűjtés szerveroldala
Távoli osztályok elérése
A példaprogramunk tesztelése
Visszatekintés a fejlesztés menetére
Távoli metódushívás hálózati tűzfalak mögött
Objektumok aktiválása
Az objektumaktiváció modellje
Aktivációs információk
Aktivációs csoportok információi
Az aktivációs mechanizmusok alapelemei
Egy új aktivációs csoport létrehozása
Az aktivációs mechanizmus központi eleme
Kezdeti értékkijelölés alkalmazása
Az aktivációt támogató külső folyamat
Egy példa: perzisztens naplózás
Komolyabb példa: tranzakciókezelés RMI felett
Több résztvevő működésének szinkronizációja
A megoldott feladat
A feladatot megoldó eszközök áttekintése
A távolról elérhető komponensek interfészei
  • Referenciák:
    • A {@link elte.java2_utikalauz5.rmi.NaptarInterface} interfész
    • A {@link elte.java2_utikalauz5.rmi.TranzakcioResztvevoInterface} interfész
    • A {@link elte.java2_utikalauz5.rmi.TranzakcioManagerInterface} interfész
    • A {@link elte.java2_utikalauz5.rmi.TranzakcioManagerFactoryInterface} interfész
    • A {@link elte.java2_utikalauz5.rmi.FoglaloInterface} interfész
A komponensek összekapcsolása
A naptárokat megvalósító osztály
A kétfázisú megegyezési protokoll
A koordinátorokat konstruáló osztály
A naptárakba bejegyzést elvégző osztály
A program fordítása és kipróbálása
  • Képek:
    • A futtatáshoz tartozó szekvenciadiagram
A megoldás forráskódja
A naptár implementáció forráskódja
  • Referenciák:
    • A {@link elte.java2_utikalauz5.rmi.Naptar} osztály
A tranzakció kivétel forráskódja
  • Referenciák:
    • A {@link elte.java2_utikalauz5.rmi.TranzakcioException} kivétel
A koordinátor osztály forráskódja
  • Referenciák:
    • A {@link elte.java2_utikalauz5.rmi.TranzakcioManager} osztály
A koordinátorgyártó osztály forráskódja
  • Referenciák:
    • A {@link elte.java2_utikalauz5.rmi.TranzakcioManagerFactory} osztály
A lefoglaló osztály forráskódja
  • Referenciák:
    • A {@link elte.java2_utikalauz5.rmi.FoglaloOsztaly} osztály
A tesztprogram forráskódja
  • Referenciák:
    • A {@link elte.java2_utikalauz5.rmi.FoglalExec} példaprogram
Egy elosztott szinkronizációs mechanizmus
A Java 5.0 újdonságai
Dinamikus csonkosztály-generálás
Az RMI hálózati szintű vezérlése végpontgenerátorokkal
A végpontgenerátorok bemutatása egy példán keresztül
  • Referenciák:
    • A {@link elte.java2_utikalauz5.rmi.NegInputStream} osztály
    • A {@link elte.java2_utikalauz5.rmi.NegOutputStream} osztály
    • A {@link elte.java2_utikalauz5.rmi.NegVegpont} osztály
    • A {@link elte.java2_utikalauz5.rmi.NegServerSocket} osztály
    • A {@link elte.java2_utikalauz5.rmi.NegKliensVegpontGenerator} osztály
    • A {@link elte.java2_utikalauz5.rmi.NegSzerverVegpontGenerator} osztály
    • A {@link elte.java2_utikalauz5.rmi.Szamlalo} osztály
    • Az {@link elte.java2_utikalauz5.rmi.NSzerver} példaprogram
    • Az {@link elte.java2_utikalauz5.rmi.NKliens} példaprogram
Biztonságos végpontok (JSSE)
  • Referenciák:
    • Az {@link elte.java2_utikalauz5.rmi.SSLKliensVegpontGenerator} osztály
    • Az {@link elte.java2_utikalauz5.rmi.SSLSzerverVegpontGenerator} osztály
    • Az {@link elte.java2_utikalauz5.rmi.SSLSzerver} példaprogram
Igény szerinti alkalmazás-indítás
  • Referenciák:
    • A {@link elte.java2_utikalauz5.rmi.RegistryKeszito} osztály
    • Az {@link elte.java2_utikalauz5.rmi.InetdInterfesz} interfész
    • Az {@link elte.java2_utikalauz5.rmi.InetdSzerver} példaprogram
Az inetd paraméterezése
A rendszer kipróbálása
  • Referenciák:
    • Az {@link elte.java2_utikalauz5.rmi.InetdKliens} példaprogram
Az {@code rmid} igény szerinti indítása
  • Referenciák:
    • Az {@link elte.java2_utikalauz5.rmi.RmidTeszt} példaprogram
@link.forrásfájl {@docRoot}/../data/rmi/src package-info.java @author Csizmazia Balázs @author Kitlei Róbert */ package elte.java2_utikalauz5.rmi;