繁体   English   中英

通过WAN连接以编程方式启动的RMI服务器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM