2012-01-27 7 views
1

У меня есть этот сервер RMI, что я пытаюсь подключиться к из дома, и я получаю сообщение об ошибке:RMI сервер за подключение NAT отказался принять

java.rmi.ConnectException: Соединение отказался принять: XX.XXX .XX.XXX; вложенное исключение: java.net.ConnectException: подключение истекло: подключение

public GUILogic(GUI gui) throws NotBoundException, MalformedURLException, RemoteException{ 
     super(); 
     this.gui = gui; 
     String objectname = "chatter"; 

     String url = "rmi://" + hostname + "/" + objectname; 

     cf = (ChatFront) Naming.lookup(url); 


    } 

У меня есть порт пересылается порт 1099 (на сервере), когда я пытаюсь http://www.canyouseeme.org/, я найти порт. Каждый брандмауэр отключается на моем компьютере и сервере. Сервер работает нормально, если я настроил его в локальной сети.

В чем проблема?

+1

Вы посмотрели ниже ссылку ?? http://stackoverflow.com/search?q=java.rmi.ConnectException%3A+Connection+refused+to+hos –

+0

проверить это, может помочь вам сначала ... http://stackoverflow.com/questions/7898120/ java-rmi-connectexception-connection-отказало-на-хост-когда-rmi-server-is-child-p –

+0

Возможный дубликат [RMI-сервера за NAT java.rmi.ConnectException: Connection отказался от хоста:] (http://stackoverflow.com/questions/9018812/rmi-server-behind-nat-java-rmi-connectexception-connection-refused-to-host) – EJP

ответ

1

У меня такая же проблема.

Я исправил его, установив имя хоста, которое может быть разрешено как сервером (за NAT), так и клиентом.

Затем я добавил этот ARG к серверу, в командной строке Java:

-Djava.rmi.server.hostname=yourhostname 

И это сработало.

На стороне сервера простой getRegistry работал отлично.

Registry registry = LocateRegistry.getRegistry(); 

Не забывайте хранить реестр и экспортировать порты объектов.

Смежные вопросы