Java RMI с внешнего IP - PullRequest
2 голосов
/ 09 мая 2020

Я использовал java RMI для подключения двух приложений java. если я запускаю их оба локально (и меняю ip на localhost) , он работает, если я запускаю их оба на своем сервере, он работает. но если я запускаю Client. java локально и ApplicationServer. java на моем сервере, он выбрасывает это на стороне клиента:

Exception in thread "main" java.rmi.ConnectException: Connection refused to host: my.servers.private.ip; nested exception is:
        java.net.ConnectException: Connection timed out: connect ...

Client:

public class Client {

    public static void main(String[] args) throws RemoteException, MalformedURLException NotBoundException {
                System.out.println("attempting connection");

                System.setProperty("java.security.policy","test.policy");
                HelloService service =(HelloService) Naming.lookup("rmi://my.servers.private.ip:1001/hello");

                System.out.println("connected");
                if(service.isConnected()) {
                       System.out.println("success.");
                }
    }
}

Server:

public class ApplicationServer {

    public static void main(String[] args) throws RemoteException, AlreadyBoundException {
                System.setProperty("java.security.policy","test.policy");
                System.setProperty("java.rmi.server.hostname","my.servers.private.ip");

                Registry registry = LocateRegistry.createRegistry(1001);
                registry.rebind("hello", new HelloServant());
                System.out.println("ready");
    }
}

Если я изменю код с my.servers.private.ip на my.servers.public.ip и запустил оба на моем сервере, это тоже не сработает.
Изменение my.servers.private.ip на my.servers.public.ip не работает.

У меня такое чувство, что он должен что-то делать с publi c и частным IP.

...