[MWy] (RMI) Implementace lokalni Node
Andrej Podzimek
podzimek at d3s.mff.cuni.cz
Wed Mar 16 17:51:52 CET 2011
Dobrý den,
v referenční implementaci máme dokonce dvě verze druhého úkolu:
a) Node je pouze Serializable
b) Node je UnicastRemoteObject
V případě b) bude vzdálený Searcher k lokálním Nodes přistupovat přes stuby, tedy jako ke vzdáleným objektům po síti. (Jde o klasický případ „Invesion of Control“, tedy vzdálený Sarcher dostane reference vedoucí zpět na klienta.)
V případě a) dojde na straně klienta k serializaci celých komponent grafu, které obklopují počáteční a koncový uzel předávaný metodě getDistance(). Komponenty se přenesou na server (tedy k implementaci vzdáleného rozhraní Searcher) a na serveru vzniknou jejich kopie, zcela nezávislé na originálech.
Každý objekt typu Serializable může pochopitelně obsahovat reference na další objekty. Jde-li o reference typu Serializable (a nikoliv UnicastRemoteObject), serializují se rekurzivně. Jde-li o reference na UnicastRemoteObject, nahradí se při serializaci za stub, tedy „vzdálenou referenci“.
Tím je zodpovězena otázka, jak se vzdálený Searcher dostane k sousedům příslušného uzlu v případě a) -- dostane jejich kopie. I když, přísně vzato, podle zadání máte tuto otázku zodpovědět Vy. ;-)
Případ a) je preferovaný (a hovoří o něm i zadání), nicméně uznám i implementaci případu b) jako řešení.
Mimochodem, v případě a) můžete u hustých grafů narazit na přetečení zásobníku. K němu může dojít právě při rekurzivní serializaci velké komponenty. (Pak nezbude než zkusit parametr -Xss...)
S pozdravem
Andrej Podzimek
> Dobry den,
> mel bych technickou otazku k druhemu ukolu (lokalni nodes, vzdaleny searcher) prvniho domaciho cviceni z middleware.
> Je chyba aby NodeImpl dedilo od UnicastRemoteObject? Popripade co je na tom spatneho.
> Kdybych implementoval NodeImpl jako potomka UnicastRemoteObject, byla by tato trida znovupouzitelna
> u tretiho ukolu (vzdalene nodes, lokalni searcher), coz koliduje s pozadavkem z poznamek z cviceni:
> Jiná třída než lokální NodeImpl!
> Stačí copy/paste a upravit
> Chceme, aby se lokální Nodes chovaly stále lokálně v předchozí variantě.
>
> Jak by se tedy lokalni NodeImpl implementovalo jinak nez jako potomek UnicastRemoteObject?
> Stacilo by, aby implementovalo Serializable?
> Jak by se ale potom dostal searcher k sousedum konkretniho node?
>
> Omlouvam se, jsem si vedom ze tyto otazky zaznely na prednasce,
> bohuzel si nejsem jist s odpovedmi na ne.
> Dekuji Karel Fiser
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 6131 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://d3s.mff.cuni.cz/pipermail/nswi080/attachments/20110316/7639b697/attachment.bin>
More information about the NSWI080
mailing list