Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Работа с сетью > rmi запуск клиента и сервера на разных машинах


Автор: yoghurt92 15.5.2014, 00:25
Доброго времени суток! начал изучение rmi и столкнулся с такой проблемой, при запуске на одной машине как клиента, так и сервера, все прекрасно работает. Но при попытке сделать тоже на разных машинах, я терплю неудачу. Буду благодарен за любую помощь  smile 

Вот код интерфейса:

Код

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Hello extends Remote {
    
    public String sayHello() throws RemoteException;
}


теперь код клиента:

Код

import java.rmi.*;

public class Client {

    public static void main(String[] args) {
        
        new Client().go();
    }

    public void go() {
        
        try {
            Hello service = (Hello) Naming.lookup("rmi://192.168.0.101/HelloFromServer");
            
            String s = service.sayHello();
            System.out.println(s);
        }
        catch(Exception exc) {
            exc.printStackTrace();
        }
    }

}


192.168.0.101 - ip сервера машины, на которой запускается серверная программа (ось - Ubuntu)

теперь собственно код сервера:

Код

import java.rmi.*;
import java.rmi.server.*;

public class Server extends UnicastRemoteObject implements Hello {

    
    public Server() throws RemoteException {

    }

    public static void main(String[] args) {
        
        try {
            Hello service = new Server();
            Naming.rebind("HelloFromServer", service);
        }
        catch(Exception exc) {
            exc.printStackTrace();
        }
    }

    @Override
    public String sayHello() throws RemoteException {
        
        return "Server say 'Hello'";
    }

}


естественно на стороне сервера запускаю rmic для получения файла  заглушки, затем регистрирую rmiregistry & и уже затем запускаю сервер. И при попытке получения файла клиентом получаю следующие ошибки

user posted image

Автор: JDmitry 21.5.2014, 13:23
Для подключения к RMI клиент должен иметь заглушку (stub объект), в котором описано как работать с сервером.
Его можно создать с помощью программы rmic, входящий в состав JDK. Вы получите файл Server_Stub.class, который нужно поместить в classpath клиента. Тогда клиент сможет работать с сервером

Автор: yoghurt92 21.5.2014, 16:58
спасибо, уже разобрался)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)