我正在尝试连接到我在远程服务器上启动的RMI注册表,但一段时间后我收到以下异常:
java.rmi.ConnectException: Connection refused to host: *.*.*.*; nested exception is:
java.net.ConnectException: Connection timed out
通过在服务器上运行客户端localy,一切正常,但我无法远程连接到它;甚至不是来自telnet。但是,如果我跑
start rmiregistry 1337
我可以通过telnet远程连接到它。我假设在运行服务器代码时我必须设置它,但我很难找到它是什么。
这是服务器代码的一部分:
String codeBasePath = "file:/C:/*path*/build/classes";
System.setProperty("java.rmi.server.codebase", codeBasePath);
System.setProperty("java.rmi.server.hostname", *host IP*);
RemoteFileServer server = new FileServer();
Registry registry = LocateRegistry.createRegistry(PORT);
registry.bind(*name*, server);
System.out.println("Server ready");
如果您需要更多信息/代码来帮助我弄清楚,请告诉我。
答案 0 :(得分:0)
好的,我可以想到两个选项
1 - 您是否已授予使用安全策略的传入连接的权限。这一步很简单,实际上请看这里:rmi run tutorial
2 - 操作系统可能会关闭外部端口。例如,如果您使用的是Linux,则需要从iptables打开端口,如: iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1099 -j ACCEPT iptables -A OUTPUT -m state --state NEW -m tcp -p tcp --dport 1099 -j ACCEPT 或者如果您使用Windows,则可以从防火墙配置它。
如果有什么不清楚,你可以问。