2015-06-10 2 views
0

Я попытался реализовать концепцию RMI, используя два компьютера, подключенных к сети моей компании. Я привязал удаленный объект, используя свой IP-адрес и определенный номер порта. Все работало нормально, когда я попробовал это на своей локальной машине.Как реализовать RMI с помощью компьютеров, подключенных к одной сети?

Теперь, чтобы получить доступ к нему с другого компьютера, я поделился файлом .class с интерфейсом Adder (extends Remote) с другим компьютером и кодом клиента. Когда я попытался получить к нему доступ, он выбрал ClassNotFoundException: stub не найден.

Так что я разделил файл stub.class, который генерируется после выполнения команды >> РМИЦ AddImpl. После этого он отлично работал и на удаленном компьютере.

Теперь мой вопрос: это как RMI реализовано? Нужно ли нам делиться как интерфейсом Adder, так и файлом класса stub, созданным для того, чтобы клиент мог получить доступ к нашему удаленному методу?

Ниже приведены мои классы и интерфейсы:

interface Adder extends Remote 
class AddImpl extends UnicastRemoteObject implements Adder 
class Server 
class Client 

ответ

0

Вы должны разделить 3 файла Adder.class, Adder.java, AdderRemote_Stub.class (не ява код)

Пусть вас составили уже

  1. создать две различные каталоги

  2. запуск 3 командной строки

  3. набор первых 2 командной строки для первого каталога (сервер)

    Пример: C: \ rmiserver

    положить все файлы здесь

  4. установить последний 1 команда запрашивать второй каталог (клиент)

    Пример: C: \ rmiclient

    размещены конкретные файлы клиента, заглушки и удаленные устройства здесь

  5. (продается отдельно) комплект CLASSPATH =. в командной строке все

    это позволит текущие файлы каталога, которые будут признаны в CLASSPATH

  6. важно: запустить команду rmiregistry в командной строке, где сервер.Файлы классов находятся в CLASSPATH

    запустить rmiregistry 5000 команды в любом из первой 2 команды оперативной

    сохранить это работает

  7. запустить сервер «Java MyServer» в оставшейся командной строке из первых 2

  8. запуск вы клиент «ява MyClient» в последней командной строке, которая является другим каталогом

    , если это работает, то ваша сеть будет работать логик

Дубликат java.rmi.ServerException: RemoteException occurred in server thread (ClassNotFoundException)

+0

Да моя логика работает просто отлично для сети тоже. Я спрашивал: «Как RMI может быть достигнуто (путем совместного использования сумматора, файлов-заглушек)?» – KarthickN

+0

Вам не нужно делиться Adder.java. Два файла. – EJP

+0

Да, я понимаю. Просто хотел подтвердить, что это можно сделать. Спасибо :) – KarthickN

Смежные вопросы