强制RMIService与特定IP地址绑定

时间:2015-09-02 20:37:07

标签: binding jboss ip registry rmi

我使用在端口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();

2 个答案:

答案 0 :(得分:1)

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

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

  3. 您似乎必须定义自己的RMIServerSocketFactory,并根据需要创建ServerSockets

答案 1 :(得分:0)

我假设要从另一台服务器访问RMI,RMI服务应绑定为127.0.0.1:4099或192.168.29.8:4099。我在Linux服务器上遇到过这个问题,事实证明我必须在" iptables"中打开端口。