NAT Connection后面的RMI服务器拒绝主持

时间:2012-01-27 16:49:06

标签: java rmi

我有这个RMI服务器,我正在尝试从家里连接,我收到此错误消息:

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 个答案:

答案 0 :(得分:2)

我有完全相同的问题。

我通过设置主机名来修复它,主机名可以由服务器(NAT后面)和客户端解析。

然后,我在java命令行中将此arg添加到服务器:

-Djava.rmi.server.hostname=yourhostname

它有效。

在服务器端,一个简单的getRegistry可以很好地工作。

Registry registry = LocateRegistry.getRegistry();

不要忘记nat注册表和导出的对象端口。