Моя цель - создать программу распределенных вычислений, которая запускает сервер и клиент одновременно.Мне нужно, чтобы его можно было установить на пару машин, и чтобы все машины связывались друг с другом, т.е. главный узел и 5 подчиненных узлов - все из одного приложения.
Моя проблема заключается в том, что я не могу правильно использовать unicastRef, Я думаю, что это проблема с запуском всего на том же порту, есть ли лучший способ, который я пропускаю?
это часть моего кода (часть, которая имеет значение)
try {
RMIServer obj = new RMIServer();
obj.start(5225);
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println("We are slave's ");
Registry rr = LocateRegistry.getRegistry("127.0.0.1", Store.PORT, new RClient());
Call ss = (Call) rr.lookup("FILLER");
System.out.println(ss.getHello());
} catch (Exception e) {
e.printStackTrace();
}
}
это мой основной класс (вверху)
это класс сервера (ниже)
public RMIServer () {}
public void start(int port) throws Exception {
try {
Registry registry = LocateRegistry.createRegistry(port, new RClient(), new RServer());
Call stuff = new Call();
registry.bind("FILLER", stuff);
System.out.println("Server ready");
} catch (Exception e) {
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}
}
Я не знаю, что мне не хватает или что я пропускаю, но вывод выглядит следующим образом.
Прослушивание 5225 Прослушивание на 8776 Готово к серверу Мы являемся ведомым устройством Прослушивание на 8776 java.rmi.NoSuchObjectException: такого объекта нет в таблице на сайте sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer (StreamRemoteCall.java:255) на sun.rmi.transport.StreamRemoteCall.executeCall (StreamRemoteCall.java:rmiser.java:rmiser.java:rmiser.java:2miser.java:rmiser.java:rmiser.java:2miser.java:rmiser.java:2miser.java:2miser.java:2miser.java:rmiser.java:rmiser.java:2miser.java:2miser.java:2miser.java:233ser.jpgicastRef.invoke (UnicastRef.java:359) в sun.rmi.registry.RegistryImpl_Stub.lookup (неизвестный источник) в Main.main (Main.java:62)
, строка 62 - это ::: Call ss= (Call) rr.lookup ("FILLER");