【问题标题】:Force RMIService to bind with specific IP address强制 RMIService 绑定特定的 IP 地址
【发布时间】:2015-11-28 12:30:06
【问题描述】:

我使用运行在端口 4099 的 Spring RMIServiceExporter 实现了 RMIService。当我启动 Jboss 时,RMI 服务绑定到 0.0.0.0:4099 而不是 127.0.0.1:4099。我尝试了不同的参数

-Djava.rmi.server.hostname=127.0.0.1
-Djava.rmi.server.hostname=localhost  
-Djava.rmi.server.hostname=localhost.localdomain along with
-Djava.net.preferIPv4Stack=true parameter. 
Started Jboss with -b 127.0.0.1

它总是绑定到0.0.0.0:4099。我使用

检查它
>netstat -anp | grep 4099

>TCP    0.0.0.0:4099           0.0.0.0:0              LISTENING

这是我的实现:

    RmiServiceExporter rmiServiceExporter = new RmiServiceExporter();
    rmiServiceExporter.setService(this);
    rmiServiceExporter.setServiceName("MyService");
    rmiServiceExporter.setServiceInterface(MyServiceManager.class);
    rmiServiceExporter.setRegistryPort(4099);
    rmiServiceExporter.afterPropertiesSet();

【问题讨论】:

    标签: binding jboss ip registry rmi


    【解决方案1】:
    1. java.rmi.server.hostname 与设置绑定地址无关,我也不确定它与 Spring RMI 是否有任何关系。这是java.rmi 包的一个功能。

    2. netstat 输出中显示的侦听端口是注册表端口,不一定是您的服务器正在侦听的端口。

    看来你必须定义你自己的RMIServerSocketFactory 来创建你想要的ServerSockets 绑定。

    【讨论】:

      【解决方案2】:

      我假设要从另一台服务器访问 RMI,RMI 服务应该绑定为 127.0.0.1:4099 或 192.168.29.8:4099。我在 Linux 服务器中遇到了这个问题,结果我必须在“iptables”中打开端口。

      【讨论】:

      • 同一主机内只能访问127.0.0.1。
      猜你喜欢
      • 2012-03-14
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-12
      • 2011-07-28
      • 2021-01-20
      • 1970-01-01
      相关资源
      最近更新 更多