我有这个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/时,我找到了端口。每台防火墙都在我的计算机和服务器上。如果我在局域网上设置它,服务器工作正常。
问题是什么?
答案 0 :(得分:2)
我有完全相同的问题。
我通过设置主机名来修复它,主机名可以由服务器(NAT后面)和客户端解析。
然后,我在java命令行中将此arg添加到服务器:
-Djava.rmi.server.hostname=yourhostname
它有效。
在服务器端,一个简单的getRegistry可以很好地工作。
Registry registry = LocateRegistry.getRegistry();
不要忘记nat注册表和导出的对象端口。