![Page 1: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/1.jpg)
FicsorLajos
javarmi / 1
Java RMIJava RMIÁÁttekintttekintééssFicsor Lajos
Miskolci EgyetemÁltalános Informatikai Tanszék
Utolsó módosítás: 2008. 03. 05.
![Page 2: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/2.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 2
A A Java RMIJava RMIRPC - egy távoli eljárás hívása helyi hívásnak tűnikRMI - hasonló mechanizmust biztosít, de objektum orientált módon: egy távoli objektummetódusának hívása helyi objektum használatának tűnikA Java nyelvnek nincs speciális IDL-je, ehelyett minden remote interface ajava.rmi.Remoteinterface-t terjeszti ki
![Page 3: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/3.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 3
A A Java RMI Java RMI architearchitektktúúrráájaja
Client Server
Stubs SkeletonsRemote Reference Layer
Transport Layer
Alkalmazás
![Page 4: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/4.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 4
AzAz RMI RMI architearchitektktúúrara elemeielemeiStubs A kliens hivatkozása a távoli objektumra valójában hivatkozás a helyi csonkra. A csonk
meghívja a Remote Reference Layer-tátalakítja (marshals) az argumentumokatértesíti a Remote Reference Layer-t hogy a hívás továbbíthatóvisszaalakítja (unmarshals) a visszatérési értéket vagy a kivételtértesíti a Remote Reference Layer-t, hogy a hívás befejeződött.
![Page 5: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/5.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 5
AzAz RMI RMI architearchitektktúúrara elemei (folyt.)elemei (folyt.)SkeletonTartalmaz egy metódust, amely továbbítja a hívásokat az aktuális távoli objektumok implementációjának:
visszaalakítja (unmarshals) az argumentumokatmeghívja az aktuális távoli objektum implementációjátátalakítja (marshals) a visszatérési értéket vagy a
kivételt
![Page 6: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/6.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 6
AzAz RMI RMI architearchitektktúúrara elemei (folyt.)elemei (folyt.)Remote reference layerA specifikus távoli hivatkozás protokoll végrehajtásáért felelős. Minden távoli objektum saját távoli hivatkozás osztályt választ, amely a kéréseit végrehajtja. Számos hívási protokoll választható ebben a rétegben. Például:
unicast point-to-point invocationinvocation to replicated object groups
support for a specific replication strategysupport for a persistent reference to the remote object (enabling activation of the remote objectum)reconnection strategies
![Page 7: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/7.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 7
AzAz RMI RMI architearchitektktúúrara elemei (folyt.)elemei (folyt.)Transport layer
A távoli címtartománnyal való kapcsolat létrehozásaA kapcsolat menedzseléseA kapcsolat "élő" voltának figyelése A bejövő hívások figyeléseAz címtartományhoz tartozó távoli objektumok táblázatának karbantartása Kapcsolat létrehozása egy bejövő híváshozA távoli hívás céljának megfelelő elosztó (dispatcher) megkeresése és a kapcsolat átadása a dispatcher-nek.
![Page 8: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/8.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 8
AzAz RMIRMI egyegyééb jellemzb jellemzőőiiFonál használat az RMI-benA szerver külön szálban, vagy azonos szálban is futhatSzemétgyűjtő mechanizmus a távoli objektumokra isDinamikus osztálybetöltés
Remote objektumok és interface-eik osztályáraStub és skeleton osztályokraEgyéb, az RMI által használt osztályokra (paraméterek, visszatérési értékek)
![Page 9: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/9.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 9
RMI RMI klienskliens éés szerver fejleszts szerver fejlesztééseseInterface
implementálása(.java)
javac
rmicSzerver osztály(.class)
Szerver skeleton(.class)
RMI registry indítása
Szerver objektum aktivizálása
Távoli objektum regisztrálása
Kliensimplementálása(.java)
javac
Kliens indítása
User feladataGenerált elem
Program feladata
Manuális tev.
Jelölés
User
uses
9
84
3a
3
2
7
1 Remoteinterface
definiálása
Kliens stub(.class)Kliens alk.
(.class) 5
6: csak 1.4-ig!
![Page 10: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/10.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 10
A A fejlesztfejlesztéés ls lééppééseisei1. A távoli interface definiálása
A távoli objektum interface-ének definiálása Java interface-ként
A java.rmi.Remote interface-t kell kiterjesztenieMinden metódusának dobnia kell a java.rmi.RemoteException kivételt.
![Page 11: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/11.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 11
A A fejlesztfejlesztéés ls lééppéései (folyt.)sei (folyt.)2. A távoli interface implementálása
Az előbbi interface-t kell implementálnia1.5 előtti verziók esetén a java.rmi.UnicastRemoteObject osztály leszármazottja kell legyenAz 5. verziótól kezdve ez nem szükségesA szerver osztályt példányosítani kell egy mainmetódusban. Ez lehet ugyanabban az osztályban, vagy egy másikban.A szerver objektumot exportálni kell (leszármazott esetén nem kell.)
![Page 12: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/12.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 12
A A fejlesztfejlesztéés ls lééppéései (folyt.)sei (folyt.)3. A szerver osztály lefordítása3a. A stub compiler futtatása (csak 5. előtti
verziók esetén!)A neve rmic, paraméterei azonosak a javac-velGenerálja a kliens stub-ot és a szerver skeletont.Az 5. verziótól kezdve nem szükséges.
![Page 13: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/13.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 13
A A fejlesztfejlesztéés ls lééppéései (folyt.)sei (folyt.)4. RMI registry indítása
rmiregistry parancs a szerver gépenLehetővé teszi a távoli objektum név szerinti elérésétEz is távoli objektumként van implementálvaMinden szerver processz használhat saját registry-tvagy egy közösetA registry kezdetben üres, a távoli objektumokat a szerver processz(ek)nek kell bejegyeznie
![Page 14: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/14.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 14
A A fejlesztfejlesztéés ls lééppéései (folyt.)sei (folyt.)5. Szerver processz indítása
A szerver processz létrehozza a szerver objektum példányát vagy példányait
6. Távoli objektumok regisztrációjaA szerver processz bejegyzi a távoli objektumokat a registry-beEhhez a java.rmi.Naming osztály metódusait használhatjaA szerver ezzel kész fogadni a kliensek kapcsolódását
![Page 15: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/15.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 15
A A fejlesztfejlesztéés ls lééppéései (folyt.)sei (folyt.)7. Kliens kód megírása
A távoli objektum megkereséséhez használnia kell a java.rmi.Naming osztály metódusaitA távoli objektum használata ezután ugyanolyan, mint a lokális objektumoké
8 Kliens kód lefordítása
9. Kliens indítása
![Page 16: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/16.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 16
RMI RMI interfaceinterface--ekek éés oszts osztáályoklyokRMI-vel kapcsolatos csomagok (több, mint 25 osztály és interface):java.rmijava.rmi.serverjava.rmi.dgcjava.rmi.registry
Három funkcionális kategória:RMI alapokRMI securityRMI marshalling
![Page 17: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/17.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 17
RMI alap osztRMI alap osztáályok lyok éés s interfaceinterface--ekekObject osztály(from java.lang)
IOExcept ion osztály(from Java.io)
Remote
(from java.rmi)RemoteObject
RemoteObject()equals()toString()
(from java.rmi.server)
RemoteStub
RemoteStub()setRef()
(f ro m j ava .rmi.se rver)RemoteServer
RemoteServer()getClientHost()getLog()setLog()
(from java.rmi.server)
UnicastRemoteObject
UnicastRemoteObject()exportObject()clone()
(from ja va.rmi.serve r)
RemoteExcept ion
RemoteException()getMessage()
(from java.rmi)
Kliens osztály Szerver osztály
<<uses>>
<<implements>>
![Page 18: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/18.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 18
RMI alap osztRMI alap osztáályok feladatalyok feladataRemote interface
Nincs egyetlen metódusa sem. Csak jelző.Minden remote objektumnak implementálnia kell
RemoteObject osztályA Java Object osztály szerepét tölti be a távoli objektumokra
RemoteStub osztályA kliens objektum(ok) közvetlen ősosztályaElrejti a szerver objektummal való kapcsolatot az őt használóobjektumok elől.
![Page 19: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/19.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 19
RMI alap osztRMI alap osztáályok feladata (folyt.)lyok feladata (folyt.)RemoteServer osztály
Szerver objektumok létrehozása és exportálása (elérhetővé tétele)A szerver implementációk közös bázisosztálya
UnicastRemoteObject osztályA távoli szerver objektum implementációja, az alábbi tulajdonságokkal:• Tranziens objektum• összeköttetés alapú TCP protokollt használ a
kommunikációraAz 1.5-nál régebbi verziók esetén a szerver osztály ősosztálya kell legyen
![Page 20: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/20.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 20
RMI alap osztRMI alap osztáályok feladata (folyt.)lyok feladata (folyt.)RemoteException osztály
Az RMI által kiváltható valamennyi kivétel ősosztályaA remote interface valamennyi metódusánál specifikálni kell
![Page 21: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/21.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 21
RMI RMI NamingNaming szolgszolgááltatltatááss
Registry
lookup()bind()
unbind()
(from java.rmi.registry)
Remote
(from java.rmi)
LocateRegistry
getRegistry()createRegistry()
(from java.rmi.registry)Naming
lookup()bind()unbind()rebind()list()
(from java.rmi.registry)
Object osztály(from java.lang)
rebind()
![Page 22: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/22.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 22
A A namingnaming szolgszolgááltatltatáás haszns hasznáálatalataTöbbnyire csak a Naming osztályt használjuk.Azonosítás URL formátumú:
rmi://host:port/objektumnevDefault port: 1099
A kliens a lookup metódust használja a távoli objektum referencia megszerzésére:
Remote lookup(String name)A szerver a bind vagy rebind metódust használja a szerver objektum regisztrálására:
void bind(String name, Remote obj)
![Page 23: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/23.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 23
Az RMI forgatAz RMI forgatóókköönyvenyve
Proxyszerver
2. rebind3. setSecurityManager
4. lookup
download
5. metódus hívás metódus hívás
Kliens oldal Szerver oldalKliens System Naming System Szerver
1. setSecurityManager
![Page 24: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/24.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 24
Az RMI forgatAz RMI forgatóókköönyve (folyt.)nyve (folyt.)1. A szerver engedélyezi az RMI Security Manager
működését: létrehoz egy új RMISecurityManager objektumot és átadja a System objektumnak
2. A szerver regisztrálja magát a névszolgáltatónál3. A kliens is engedélyezi az RMI Security
Managert a saját rendszerében
![Page 25: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/25.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 25
Az RMI forgatAz RMI forgatóókköönyve (folyt.)nyve (folyt.)4. A kliens megkeresi a távoli objektumot
Kiad egy lookup hívást a Naming objektumnak, és megadja a kivánt szerver URL nevétA metódus visszad egy referenciát a proxy szerverreHa szükséges, a kliens oldali stub letöltődik
5. A kliens meghívja a távoli objektum metódusátA hívás a proxy szerver objektumhoz fut beA proxy szerver továbbítja a hívást a stub segítségévelA hívás eredménye visszaérkezik szintén a stubsegítségével
![Page 26: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/26.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 26
EgyszerEgyszerűű ppééldaldaEbben a példában a távoli objektum egy számlálóval rendelkezik. A számláló adott értékre beállítható, inkrementálható, lekérdezhető.Egy kliens ezt a távoli objektumot használva nullázza a számlálót, ezerszer inkrementálja, majd lekérdezi az értékét.A szerver helye a kliens program paramétere.
![Page 27: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/27.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 27
PPéélda: tlda: táávoli voli interfaceinterfaceA távoli objektum interface-e:
public interface CountRMI extendsjava.rmi.Remote
{publicint sum() throws java.rmi.RemoteException;publicvoid sum(int val) throwsjava.rmi.RemoteException;publicint increment() throwsjava.rmi.RemoteException;
}
![Page 28: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/28.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 28
PPéélda: kliens programlda: kliens programimport java.rmi.*;import java.rmi.registry.*;import java.rmi.server.*;
public class CountRMIClient{ public static void main(String args[]){ // Security manager beállításaSystem.setSecurityManager(newRMISecurityManager());
![Page 29: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/29.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 29
PPéélda: kliens program (folyt.)lda: kliens program (folyt.)// Referencia szerzese a tavoli objektumratry{ CountRMI myCount = (CountRMI)Naming.lookup("rmi://" + args[0] + "/" + "myCountRMI");
// Megjegyzesek:// a fenti castolas szukseges es lehetseges// innentol kezdve a myCount ugyanugy// hasznalhato, mint egy helyi referencia// szamlalo nullazasaSystem.out.println("Setting Sum to 0");myCount.sum(0); // Mint egy helyi hivas
![Page 30: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/30.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 30
PPéélda: kliens program (folyt.)lda: kliens program (folyt.)// Incrementalas 1000-szerSystem.out.println("Incrementing");for (int i = 0 ; i < 1000 ; i++ )
{ myCount.increment();}
System.out.println("Sum = " + myCount.sum());// Kivetel kezelese} catch(Exception e){System.err.println("System Exception" + e);}System.exit(0);}
}
![Page 31: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/31.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 31
SSzerverzerver objektumobjektum implementimplementáácicióójajaimport java.rmi.*;import java.rmi.server.UnicastRemoteObject;
public class CountRMIImpl//csak 1.5 előtt! extends UnicastRemoteObject
implements CountRMI{// Adattagprivate int sum;
![Page 32: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/32.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 32
SSzerverzerver objektumobjektum implimpl. . (folyt.)(folyt.)public CountRMIImpl(){
}
![Page 33: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/33.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 33
SSzerverzerver objektumobjektum implimpl. . (folyt.)(folyt.)// Tavolrol is elerheto metodusokpublic int sum() throws RemoteException{ return sum; }
public void sum(int val) throwsRemoteException{ sum = val; }
public int increment() throwsRemoteException{ sum++; return sum; }
}
![Page 34: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/34.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 34
SSzerverzerver objektumobjektum inicializinicializáálláásasaimport java.rmi.*;import java.rmi.registry.*;import java.rmi.server.*;public class CountRMIServer{
public static void main(String args[]){// Security manager letrehozasa es inditasaSystem.setSecurityManager(new
RMISecurityManager());
![Page 35: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/35.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 35
SSzerverzerver objektumobjektum inicializinicializáálláásasa (folyt.)(folyt.)try{// CountRMIImpl peldany letrehozasaCountRMIImpl myCount = new CountRMIImpl();// myCount exportalasaCountRMI stub = (CountRMI)
UnicastRemoteObject.exportObject(myCount, 0);// Bejegyzés a registry-beRegistry registry =
LocateRegistry.getRegistry();registry.bind("myCountRMI", myCount);
![Page 36: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/36.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 36
SSzerverzerver objektumobjektum inicializinicializáálláásasa (folyt.)(folyt.)System.out.println("CountRMI Server ready.");} catch (Exception e){ System.out.println("Exception: " +
e.getMessage());e.printStackTrace();
}}
}
![Page 37: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/37.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 37
A pA pééldalda futtatfuttatáásasaLefordítjuk az összes modult (feltételezve, hogy a java file-ok katalógusában vagyunk)javac –cp . CountRMI.javajavac –cp . CountRMIClient.javajavac –cp . CountRMIImpl.javajavac –cp . CountRMIServer.java
(5. előtti verziónál: Futatjuk a stub compilertrmic CountRMIImpl)
Elindítjuk az RMI registry-trmiregistry
Elindítjuk a szervert majd a klienst
![Page 38: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/38.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 38
HivatkozHivatkozáásoksokCsizmazia Balázs: Hálózati alkalmazások készítése (második kiadás), 6. fejezetKiadó: Kalibán Bt., Budapest. 1998ISBN 963 03 5113 7Sok szerző: JAVA 2 útikalauz programozóknak. (Hatodik kiadás) 21. FejezetKiadó: ELTE TTK Hallgatói AlapítványBudapest, 2000ISBN 963 463 364 1
![Page 39: Java RMI Áttekintés - IITusers.iit.uni-miskolc.hu/ficsor/WEBAlkSegedletek/javarmi.pdfRPC -egy távoli eljáráshívása helyi hívásnak tűnik RMI -hasonlómechanizmust biztosít,](https://reader031.vdocuments.net/reader031/viewer/2022012002/6096fa35cc27f97b2a13f460/html5/thumbnails/39.jpg)
FicsorLajos
Java RMI (Áttekintés) javarmi / 39
HivatkozHivatkozáások (folyt.)sok (folyt.)Robert Orfali, Dan Harkey: Client/SserverProgramming with JAVA and CORBA (Second Edition) Chapter 13.John Wiley & Sons, 1998ISBN 0 471 24578 Xjava.sun.com: RMI tutorial