我使用在端口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();
答案 0 :(得分:1)
java.rmi.server.hostname
与设置绑定地址无关,我也不确定它是否与Spring RMI有任何关系。这是java.rmi
包的一个功能。
netstat
输出中显示的侦听端口是注册表端口,不一定是服务器正在侦听的端口。
您似乎必须定义自己的RMIServerSocketFactory
,并根据需要创建ServerSockets
。
答案 1 :(得分:0)
我假设要从另一台服务器访问RMI,RMI服务应绑定为127.0.0.1:4099或192.168.29.8:4099。我在Linux服务器上遇到过这个问题,事实证明我必须在" iptables"中打开端口。