Я использовал 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.