Ak zostavíte a spustíte program PerfectTime.java
, zistíte, že nefunguje
aj napriek tomu, že ste register rmiregistry
spustili správne. Príčinou
je, že ešte chýba aplikačný rámec volania RMI. musíte teda najprv vytvoriť
objekty skeleton a stub. Až tie sprístupnia sieťové prepojenie operácií a umožnia
predstierať, že vzdialený objekt je iba ďalším miestnym objektom na vašom počítači.
Dej v pozadí je však veľmi zložitý. Všetky objekty, ktoré vzdialenému objektu
predávate alebo ktoré od neho získavate, musia implementovať rozhranie Serializable
(Ak chcete však namiesto celých objektov predávať iba vzdialené odkazy, môžu
argumenty objektu implementovať rozhranie Remote
). Môžete si predstavovať, že
celý proces serializácie a deserializácie zaisťujú objekty skeleton a stub, a
tak že zaisťujú kódovanie argumentov metód (marshaling) a komunikáciu s
klientom. Všetky tieto podrobnosti našťastie nemusíme poznať. Musíte však
vytvoriť základné štruktúry a objekty stub. Je to však veľmi jednoduchý proces
Spusťte program rmic
,
ktorému predáte preložený kód vášho programu. Tento nastroj za vás vytvorí všetky
potrebné požadované súbory. Jednou požiadavkou je teda jeden krok naviac, ktorý
musíte do procesu prekladu svojho programu vložiť.
Nastroj rmic
je pri práci s balíčkami a premennými CLASSPATH
až puntičkársky. Príklad PerfectTime.java
je uložený v balíčku c15.rmi
.Aj
keby ste teda spustili program rmic v adresári v ktorom je program
PerfectTime.java uložený, nastroj by tento súbor nenašiel, pretože by prehľadával
cestu určenú v premennej prostredia CLASSPATH
. Musíte teda určiť úplnú
cestu začínajúc koreňovým adresárom určeným v premennej prostredia CLASSPATH
:
rmic
c15.rmi.PerfectTime
Pri vykonávaní tohto príkazu sa vôbec nemusíte nachádzať v
zložke, v ktorej je uložený súbor PerfectTime.class. Výsledok operácie však vždy
bude uložený v aktuálnom adresári. Po úspešnom vykonaní príkazu rmic
budú do
aktuálneho adresára pridané dve nove triedy:
PerfectTime_Stub.class
PerfectTime_Skel.class
Tieto súbory obsahujú objekty skeleton a stub. Teraz môžete konečne zahájiť komunikáciu medzi serverom a klientom.