Стартиране на две машини

1. Автоматично прехвърляне на класовете
При използването на отдалечена изчислителна услуга,  Java машината на клиента има локално всички необходими и класове и интерфейси и не се нуждае от класове прехвърляни по мрежата. За Java машината на сървъра обаче  е неизвестен класът задаващ изчислителната задача.  Трябва да се отбележи, че RMI не изпраща дефиницията на класовете заедно със сериализираните обекти. 

RMI  поддържа отдалеченето зареждане на класовете чрез RMIClassLoader. Ако сървър или клиент използват  RMI и констатират, че е необходимо зареждането на класа от отдалечена Java машина, те извикват за целта e RMIClassLoader.

Начинът, по който RMI зарежда класовете се контролира от параметри (property) задавани с  -D при стартирането на  Java машината

java [ -D<PropertyName>=<PropertyValue> ]  <ClassFile>

Параметърът  java.rmi.server.codebase се използва за задаване на URL. Той може да бъде  file:, ftp:, или http:  - мястото където се намират класовете които се изпращат от локалната Java машина.  Естествено това място трябва да бъде достъпно по мрежата, в слуаите ftp:, или http: - трябва да бъде стратиран съответния сървър.Ако една  JVM изпраща обект на друга  JVM ,  то приемащата  JVM трябва да зареди класа за този обект. Когато RMI изпраща сериализиран обект тя вгражда съответния URL откъдето може да получен класа.

 В случая на отдалечена изчислителна услуга такъв URL е необходим при изпращане на класът, който задава изчислението. Това в примера се извършва от web сървър стартиран на машината на клиента.

2. Сървър

            codebase е зададено като file: защото сървърът не изнася към клиента никаква дефиниция на клас, поради което не е необходимо и стартирането на web съсрвър.

3. Клиент