Я не уверен в вашем вопросе, что вы знаете, и о чем вы неясны.
Очень просто:
1) RMI это технология, которая позволяет различным Java процессы в сети общаются друг с другом.
2) Вместо явной отправки сетевых сообщений (например, непосредственно для чтения и записи сокетов) RMI делает его похожим на стандартный вызов метода в программу RMI.
RMI обрабатывает детали упаковки «аргументов метода» от клиента и отправки их по сети, а также сведения о распаковке их на принимающей стороне, чтобы сервер мог их обрабатывать.
Все это происходит «под обложками», прозрачно для клиента и для серверной программы.
3) Клиентская сторона «под обложками» является «заглушкой»; серверная сторона «под обложками» является клиентом. Реестр RMI просто позволяет клиенту «найти» сервер и соответствует правому заглушке с правым скелетом.
4) Время выполнения RMI сервера всегда «прослушивается» (для клиентских запросов), но отдельные серверные объекты вызываются только при необходимости.
5) Вы процитировала картину: а вот полное объяснение (в том числе изображения):
http://en.wikipedia.org/wiki/Java_remote_method_invocation
6) Если вы все еще «не достать», вот еще одна ссылка, которая может помочь :
http://docs.oracle.com/javase/tutorial/rmi/overview.html
--- ADDENDUM 12/21/2011 ---
Вопрос: не могли бы вы объяснить скелет
В: когда вызывается метод Naming.rebind (...)?
В: И что делает заглушка на стороне сервера?
Цитирование свободно от Превосходнейшего Just Java 2, Питер ван дер Линден
1) «RMI» (Remote Method Invocation) означает, что объект в одной системы может вызвать метод в объекте где-нибудь еще на система.
2) Ваш клиентский объект разговаривает с «заглушкой». Это похоже на вызов объекта клиенту, но на самом деле заглушка отвечает за получение входящих аргументов и передачу их на собеседник на серверной машине.
3) Как клиент НАЙТИ Это приятель на серверной машине? Клиент вызывает «java.rmi.Naming.Lookup()».
4) Как серверная машина KNOW о вашем классе серверов RMI? Сервер Java ЗАПОМНИТЬ реестра, вызвав «java.rmi.Naming.bind()».
5) Как знает класс сервера, чтобы получить удаленный вызов вашего клиента? Существует несколько способов, но, надеюсь, вы просто сделали жизнь легкой для себя, выведя свой серверный класс из java.rmi.server.UnicastRemoteObject.
6) Что такое «скелет»? Это серверный аналог «заглушки» клиента. Это просто рутина, которая ничего не делает, кроме как распаковывать данные, которые клиентская заглушка отправляется по сети.
Если все еще неясно, просто введите пример и посмотрите, как он себя ведет.
Запустите его из командной строки и укажите «java -Djava.rmi.server.logCalls = true ...» в командной строке сервера, чтобы увидеть вызовы RMI, которые выполняются.
'Надеюсь, что это поможет!
В RMI отсутствует «реле». Остальная часть вашего вопроса - это repost. – EJP