[英]Connecting to a programmatically started RMI server over WAN
我正在尝试连接到在远程服务器上启动的RMI注册表,但是过一会儿我得到以下异常:
java.rmi.ConnectException: Connection refused to host: *.*.*.*; nested exception is:
java.net.ConnectException: Connection timed out
通过在服务器上运行客户端本地,一切正常,但是我无法远程连接到它。 甚至不是来自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");
让我知道您是否需要更多信息/代码来帮助我解决。
好吧,我可以想到两种选择
1-您是否授予使用安全策略的传入连接权限。 此步骤实际上很简单,请参见此处: rmi运行教程
2-该端口可能已从OS外部关闭。 例如,如果您使用的是Linux,则需要从iptables打开端口,例如:iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1099 -j ACCEPT iptables -A OUTPUT -m state-状态-m tcp -p tcp --dport 1099 -j ACCEPT,或者如果您使用Windows,则可以从防火墙配置它。
如果不清楚,可以询问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.