Я работал над этим проектом, где два модуля на разных машинах должны обмениваться данными через RMI.
Я запускаю клиентские и серверные модули на своем ноутбуке.RMI, кажется, работает правильно, когда я нахожусь на работе и подключен к рабочей сети, но когда я дома, подключен к моей домашней сети, он не работает.В нем говорится, что удаленный объект не может быть найден.
Вот метод, который я использую на стороне КЛИЕНТА, чтобы получить ссылку на удаленный объект
public static MyRMIApp getRemoteApp() throws RemoteException, NotBoundException, AccessException {
Registry registry = LocateRegistry.getRegistry("localhost", 28999); // tried 127.0.0.1 instead of localhost here, still not working
MyRMIApp app = (MyRMIApp) registry.lookup("COM");
return app;
}
Выкапывая немного с некоторой отладкой, когда япроверьте значение объекта, возвращаемое методом getRemoteApp, оно показывает, что конечная точка - 67.215.65.132.Какой openDNS я использую для подключения к интернету.Разве это не должно быть 127.0.0.1?
Потом я воспользовался мобильным интернетом и попробовал еще раз.Кажется, он работает, но конечная точка - это не 127.0.0.1, опять же, это назначенный мне адрес, а именно 192.168.xx
Так может кто-нибудь сказать, что я делаю здесь неправильно?Я действительно был бы признателен за помощь.
Да, и это кусок кода на стороне SERVER
//Somwhere up top
private final static MyRMIApp rmiApp = new RMIServer();
//Down below
MyRMIApp stub = (MyRMIApp) UnicastRemoteObject.exportObject(rmiApp, 0);
Registry registry = LocateRegistry.createRegistry(28999);
registry.rebind("COM", stub);