【问题标题】:Java RMI binding problems with dns addressdns地址的Java RMI绑定问题
【发布时间】:2013-07-22 15:18:27
【问题描述】:

我正在编写一个使用 RMI 的客户端-服务器应用程序。我使用 dyndns 来获得一个不可变的地址,我可以在该地址上接受客户端的连接。 但是我在服务器中进行绑定操作时遇到了一些问题,因为我收到了这个错误: 连接被拒绝:连接

我是这样做绑定操作的:

MultiServer multi = new MultiServer(); // creates an instance of the remote object
LocateRegistry.createRegistry(port);
Naming.bind("//my_host_address.dyndns.org:my_port/MultiServer", multi);

我需要设置什么?我已经打开了我使用的端口并正确配置了 dyndns 服务(我很确定,因为我将它与套接字一起使用)。

编辑:

实际上我在我的服务器上做了这样的事情:

 //other code
 MultiServer multi = new MultiServer();
 System.setProperty("java.rmi.server.hostname", "hostname.dyndns.org");
 LocateRegistry.createRegistry(2367); // the server will listen on port 2367
 Naming.bind("//localhost:2367/MultiServer", multi);

够了吗?或者我必须向客户指定其他信息? 在客户端,我只是这样做:

 IRemoteServer remote = (IRemoteServer)Naming.lookup("rmi://hostname.dyndns.org:2367/MultiServer");

在这个指令之后,我通常使用远程接口暴露的方法。

但是按照这些步骤,我收到了这个错误消息:

Connection refused to host: **SERVER_INTERNAL_IP**; nested exception is: 
java.net.ConnectException: Connection timed out: connect

客户端在解析dns主机地址时怎么可能指向服务器的内部ip地址而不是它的真实ip?

编辑2: 我注意到客户端能够查找服务器,但它无法调用其远程方法,并且当我尝试从客户端调用远程方法时恰好引发了异常。

【问题讨论】:

    标签: java rmi


    【解决方案1】:

    尝试使用以下方式运行服务器:
    java -Djava.rmi.server.hostname=yourserver.dyndns.org -Djava.security.policy=yourPolicy.txt -cp 'yourjar.jar' yourServerClass

    【讨论】:

      【解决方案2】:

      在绑定、重新绑定或解除绑定时只需使用“localhost”。无论如何,您只能绑定到本地主机中的注册表,所以为什么要使用其他任何东西?

      但是,默认情况下,您的主机的 IP 地址嵌入在您的存根中,如果您的 IP 地址发生变化,存根就不会发生神奇的变化。您必须通过 java.rmi.server.hostname. 将“dyndns”主机名设置到存根中

      【讨论】:

      • 我明白这一点。但是客户端(将在具有其他 IP 地址的其他机器上)如何查找该服务器?我想我不能使用相同的 url,但是现在,在客户端部分我必须使用 dns 主机地址。对吗?
      • 你能给我一个简单的使用例子吗?只是举例说明你写的内容。
      • 设置系统属性的简单例子? -Djava.rmi.server.hostname=XXXX,或System.setProperty(...)。我对这个要求感到惊讶。
      • 请在主帖中查看我的编辑。我已经纠正了一些问题,但我仍然有问题。
      • 您必须在 导出任何远程对象之前设置 java.rmi.server.hostname。否则存根已经创建,为时已晚。
      猜你喜欢
      • 2017-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多