【问题标题】:java rmi server hostnamejava rmi 服务器主机名
【发布时间】:2017-11-13 18:14:59
【问题描述】:

我有两个 RMI java 应用程序:

服务器

System.setProperty("java.rmi.server.hostname", "0.tcp.ngrok.io");
System.setProperty("java.security.policy", "security.policy");
if (System.getSecurityManager() == null) {
    System.setSecurityManager(new SecurityManager());
}

Registry r = LocateRegistry.createRegistry(1099);
r.rebind("Calc", new CalculatorImpl());

客户

System.setProperty("java.rmi.server.hostname", "0.tcp.ngrok.io");
System.setProperty("java.security.policy", "security.policy");
Calculator c = (Calculator) Naming.lookup("//0.tcp.ngrok.io:18872"+"/Calc"); 
int sum = c.add(1, 5);

两者之间的通信是在 Ngrok 的帮助下完成的:

ngrok tcp 1099

结果

   Session Status                online
   Account                       nival (Plan: Free)
   Version                       2.2.8
   Region                        United States (us)
   Web Interface                 http://127.0.0.1:4040
   Forwarding                   tcp://0.tcp.ngrok.io:18872 -> localhost:1099

   Connections                   ttl     opn     rt1     rt5     p50     p90
                                  5       0       0.00    0.00    5.88    17.03

我的问题是:

 RemoteException
 java.rmi.ConnectException: Connection refused to host: 0.tcp.ngrok.io; nested exception is: 
 java.net.ConnectException: Connection timed out: connect

我认为问题出在

System.setProperty("java.rmi.server.hostname","0.tcp.ngrok.io");

我应该在 "java.rmi.server.hostname" 的服务器和客户端上放什么?

(对不起,我的英语不好)

【问题讨论】:

    标签: java rmi


    【解决方案1】:

    一般来说,它只需要在服务器端显示哪些主机名导出的存根将可供全世界使用。

    它很有用,例如,当您的服务器在 Intranet 中并在某个接口上侦听时,可以说 192.168.2.1。 NAT 代理可以将端口从 Internet 转发到该主机。通常 RMI 注册表会报告在地址 192.168.2.1:someport 上导出的存根。但显然你不能直接点击那个地址java.rmi.server.hostname 起作用了。通过设置该属性,RMI 注册中心将在给定的hostname 上宣布在实际内部网地址上导出的存根,允许客户端通过 NAT 网关上的转发端口从外部世界访问存根。

    因此,如果您的服务器位于 NAT 之后,它应该指定从 Internet 指向您的 NAT 网关的域。如果您的服务器具有外部 IP 并且它正在侦听该 IP,则不需要此属性。

    【讨论】:

      猜你喜欢
      • 2016-11-06
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      相关资源
      最近更新 更多