java rmi Áttekintés - iitusers.iit.uni-miskolc.hu/ficsor/webalksegedletek/javarmi.pdfrpc -egy...

39
Ficsor Lajos javarmi / 1 Java RMI Java RMI Á Á ttekint ttekint é é s s Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 03. 05.

Upload: others

Post on 08-Dec-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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