RMI = Remote Method Invocation Java tutorial Copyright á 2000-2002, Kozsik Tama s
í Meg tudjuk hı vni olyan objektumok meto dusait is, amelyek ma s virtua lis ge pben futnak í Kommunika cio kulő nbő z˝ ge peken futo Java programok kő ző tt … Kliens-szerver alkalmaza sok … Elosztott alkalmaza sok
í Alternatı va: CORBA … Nem csak Java programok/objektumok kő ző tt
Kliens-szerver forgato kő nyv í A szerver program ele rhet˝ ve tesz objektumokat … bejegyzi ˝ ket egy registry-be … a ta voli objektumok va rja k, hogy a kliensek meghı vja k a meto dusaikat
í A kliensek szereznek egy referencia t egy ilyen objektumra … azta n hı vogatja k a ta voli objektumok meto dusait
í A re szleteket az RMI rendszer elinte zi...
Elosztott objektumok rendszere forgato kő nyv í Kulő nbő z˝ sza mı to ge peken futo kulő nbő z˝ virtua lis ge pekben elhelyezked˝ objektumokat bejegyzunk í Megkeresik egyma st e s kommunika lnak egyma ssal … hı vogatja k egyma s meto dusait
í Egyma s megkerese se: pl. registry-n keresztul í A re szleteket az RMI rendszer elinte zi...
Teve kenyse gek í Ta voli objektumok megkerese se ra juk referencia beszerze se … rmiregistry-n keresztul … meto dushı va sok parame tereke nt/eredme nyeke nt
í Kommunika cio a ta voli objektummal … sima meto dushı va sok a programozo sza ma ra … a re szleteket az RMI elfedi
í Oszta lydefinı cio s fa jlok tova bbı ta sa … egyma snak a tadott objektumok oszta lya nak bető lte se egy ma sik, ta voli virtua lis ge pb˝ l
1 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Dinamikus oszta lybető lte s í Amikor a ta voli objektumok egyma s meto dusait hı vja k... í „ parame tereket adnak a t e s visszate re si e rte keket kapnak í Nem biztos, hogy egy virtua lis ge p ismeri annak az objektumnak az oszta lya t, amit ı gy kap í Az RMI lető lti az oszta lydefinı cio t is
Ta voli meto dus í Kiterjesztjuk a java.rmi.Remote interfe szt í Ez lesz a ”ta voli interfe szú í Ebben vannak definia lva a ta volro l meghı vhato meto dusok … csak ezek hı vhato k ta volro l
í Ezek a meto dusok specifika lja k, hogy kiva lthatja k a java.rmi.RemoteException kive telt
Ta voli objektumok í Amelyeknek meg lehet hı vni meto dusait az RMI segı tse ge vel ma s virtua lis ge pekb˝ l í A java.rmi.Remote interfe szt megvalo sı tja k í Megvalo sı tanak egy ta voli interfe szt (a Remote egy kiterjeszte se t), amiben fel vannak sorolva a ta volro l ele rhet˝ meto dusaik
Mi is tő rte nik? í A kliens egy ”ta voli referencia valú rendelkezik a ta voli objektumra í A kliens virtua lis ge pben egy proxy objektum van, ami Így csina l, mintha ˝ lenne a ta voli objektum … tova bbı tja a meto dushı va sokat a ta voli objektumnak
í Ezt a proxy objektumot stub-nak nevezik
Stub - csonk: klienscsonk í A ta voli objektum reprezenta nsa a klien virtua lis ge pekben í Amikor ta voli objektumra referencia t szerzunk a registry-b˝ l, akkor egy ilyen jő n le tre í Amikor ta voli objektumokat parame terke nt vagy visszate re si e rte kke nt a tadunk, akkor ilyen ado dik a t helyette í Ugyanazokat a ta voli interfe szeket valo sı tja meg, mint amit a ta voli objektum
Java tutorial Copyright á 2000-2002, Kozsik Tama s
… Me g cast-olni is lehet
2 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Mit is kell akkor tennunk? í Az elosztott objektumrendszer komponenseinek megterveze se e s megvalo sı ta sa í Fordı ta s, e s uta na a csonkok legenera la sa í A fa jlok kiteve se a ha lo ra í Futtata s
Java tutorial Copyright á 2000-2002, Kozsik Tama s
Az elosztott objektumrendszer komponenseinek megterveze se e s megvalo sı ta sa (4/1)
Az elosztott objektumrendszer komponenseinek megterveze se e s megvalo sı ta sa (4/2)
í El kell dő nteni, hogy a rendszerben mely komponensek lesznek ta volro l ele rhet˝ k, e s melyek lesznek loka lisak
í A ta voli interfe szek definia la sa
Az elosztott objektumrendszer komponenseinek megterveze se e s megvalo sı ta sa (4/3)
Az elosztott objektumrendszer komponenseinek megterveze se e s megvalo sı ta sa (4/4)
í A ta voli oszta lyok elke szı te se … implementa lja k a ta voli interfe szeket … megvalo sı tja k a ta volro l ige nybevehet˝ szolga ltata sokat
… a ta volro l ele rhet˝ szolga ltata sok definia la sa
í A ta voli meto dusok parame tereiben e s visszate re si e rte keiben haszna lt tı pusok (oszta lyok e s interfe szek) megı ra sa
í Kliensek megvalo sı ta sa … ra e r akkor is, ha a ta voli objektumok ma r uzembe vannak helyezve...
í A meto dusok parame tereiben e s visszate re si e rte keiben haszna lt tı pusok (oszta lyok e s interfe szek) megı ra sa
3 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Fordı ta s, e s uta na a csonkok legenera la sa í Forra sfa jlok lefordı ta sa • javac
í A .class fa jlokbo l a csonkok legenera la sa • rmic … tő bbek kő ző tt ez is re sze a Development Kit-nek
A fa jlok kiteve se a ha lo ra í Minden .class fa jlt, amit a kliensek haszna lni szeretne nek majd, ele rhet˝ ve tesszuk egy WEB-szerveren keresztul … a ta voli interfe szek … a klienscsonkok … a sege doszta lyok e s sege dinterfe szek (parame terek, visszate re si e rte kek tı pusa...)
Futtata s í Az rmiregistry program … ez is re sze a Development Kit-nek
Java tutorial
í A ta voli objektumokat bejegyz˝ programok … pl. a szerverek
Copyright á 2000-2002, Kozsik Tama s
í A haszna lo programok … kliensek
Hogyan is kell akkor ilyet ı rni? í Ke szı tsunk el egy ta voli objektumot, ami tud ő sszegezni ege sz sza mokat! í Definia ljuk a szolga ltata st: Adder interfe sz í Megvalo sı tjuk a ta voli objektumot: RemoteAdder oszta ly í Irunk egy kliens programot, ami haszna lja
Adder interfe sz í Terjesszuk ki a java.rmi.Remote interfe szt í Irjuk bele a szolga ltata st, ami most ke t meto dus … add: hozza d egy sza mot az eddigi ő sszeghez … get: leke rdezi az eddigi ő sszeget
í Gondoskodjunk arro l, hogy a meto dusok deklara lja k a throws klo zukban a java.rmi.RemoteException kive telt … mellette egyebeket is deklara lhatna nak...
4 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
RemoteAdder oszta ly Java tutorial Copyright á 2000-2002, Kozsik Tama s
í Meg kell valo sı tson egy ta voli interfe szt, most pl. az Adder interfe szt í Kiterjesztjuk a java.rmi.server.UnicastRemoteObject oszta lyt í Irnunk kell konstruktort is í Gondoskodni kell arro l, hogy beregisztra ljuk az oszta ly egy pe lda nya t egy registry-be … pl. ı rhatunk egy main meto dust is benne, ami ezt megteszi...
Ta voli interfe sz megvalo sı ta sa í Implementa ljuk az interfe szben specifika lt meto dusokat í A throws klo zban ma r nem kell feltuntetni a java.rmi.RemoteException kive telt … persze, ha akarjuk, kiva lthatjuk, e s akkor fel kell tuntetni
í Konstruktort is kell ı rni, ami viszont kiva lthatja ezt a kive telt, teha t nem lehet a default konstruktorra ta maszkodni.
Ha nem lesza rmazott... í Meg kell valo sı tani az RMI specifika cio ban adott szemantika val az Object-beli m veleteket í Explicit exporta lni kell a ta voli objektumot … hogy az RMI rendszer tudoma st szerezzen ro la UnicastRemoteObject.exportObject(ᑺ)
UnicastRemoteObject í E rdemes ebb˝ l sza rmaztatni a ta voli objektumok oszta lya t í Ke nyelmi oszta ly … toString, equals, hashCode … ű exporta la sú, lesza rmaza sna l automatikus
í Pont-pont (unicast, e s nem broadcast) kommunika cio í Alape rtelmezett socket-os megvalo sı ta sa az RMI-nek
A beregisztra la s mo dja í Megfelel˝ biztonsa gi felugyel˝ (security manager) installa la sa í A ta voli objektum oszta lya nak pe lda nyosı ta sa í Bejegyze s … pl. rmiregistry-be … vagy ma s szolga ltato ba, pl. JNDI
5 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Biztonsa gi felugyel˝ í Ve di a virtua lis ge pet e s az azt futtato rendszert a lető ltő tt ko dto l (pl. loka lis fa jlrendszer ele re se) í Kő telez˝ definia lni, ha azt akarjuk, hogy dinamikus oszta lylető lte s menjen parame terek, visszate re si e rte kek, kive telek tı pusa ra
í java.rmi.RMISecurityManager í Olyasmi, mint ami az appletek esete n is van í Lehet ma st is bea llı tani, vagy jogokat adni egy policy fa jllal System.get/setSecurityManager()
Bejegyze s í Ahhoz, hogy egy kliens szerezni tudjon egy referencia t e lete els˝ ta voli objektuma ra í A tő bbire ma r tud referencia t szerezni ett˝ l í Predefinit ta voli objektum: RMI registry í Ne v alapja n lehet t˝ le ta voli objektumokra referencia t ke rni í Szolga ltata s elindı ta sa: rmiregistry í API hozza : java.rmi.Naming
registry rmi://sza mıtoge p:port/ne v í Ha nem adunk meg sza mı to ge pet, akkor az aktua lis sza mı to ge p í Ha nem adunk meg portot, akkor 1099
Java tutorial Copyright á 2000-2002, Kozsik Tama s
í Ha bejegyeztunk egy ta voli objektumot, akkor ma r van egy referencia ra , eze rt nem lehet ˝ t felszabadı tani szeme tgy jte ssel, eze rt a main ve gete re se uta n nem a ll le a prg.
Pe lda í Olyan ta voli objektumot fogunk ı rni, ami valamilyen feladatot old meg. Az, hogy mi a feladat, ismeretlen akkor, amikor a ta voli objektumot elke szı tjuk. Annyit tudunk csak, hogy leı rhato egy bizonyos interfe sszel. A dinamikus oszta lybető lte s gondoskodik a tő bbir˝ l„
6 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com