Я использую базовое клиент-серверное приложение на основе RMI, показанное в Учебниках Java. Я использую сервер и клиент на разных машинах. Я также экспортирую удаленные объекты как для сервера, так и для клиента, и делаю их доступными друг для друга.
Однако на стороне клиента включен брандмауэр, и поэтому вызовы RMI не выполняются (от клиента к серверу или от сервера к клиенту). Кроме того, когда на компьютере установлена Windows 7 вместо WindowsXP, просто разрешение всплывающего сообщения от брандмауэра заставляет все работать нормально. Почему-то то же самое не происходит в WindowsXP.
Я посмотрел на http://download.oracle.com/javase/6/docs/technotes/guides/rmi/faq.html#firewall, упомянутый в других подобных вопросах, и я пытаюсь использовать подход с фиксированным портом (где удаленный объект прослушивает фиксированный порт).
Код выглядит примерно так:
Сервер
Compute engine = new ComputeEngine();
Compute stub = (Compute) UnicastRemoteObject.exportObject(engine,1299);
Registry registry = LocateRegistry.createRegistry(1299);
registry.rebind("Compute", stub);
Клиент
String host = "192.168.x.y";
Registry registry = LocateRegistry.getRegistry(host, 1299);
Compute comp = (Compute) registry.lookup("Compute");
Pi task = new Pi(Integer.parseInt(args[0]));
BigDecimal pi = comp.executeTask(task);
Пожалуйста, дайте мне знать, если вы столкнулись с подобной проблемой или если вы можете указать, где я иду не так.
Спасибо
Abhinav.