Vytváranie objektov stub a skeleton

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.

Späť