RMI服务多网卡问题

项目中使用了一些RMI服务,部署发现在linux环境下监听了端口,但无法被其他机器调用。于是打印出log分析情况。
注:如果使用spring框架,打印日志需要引入slfj4-api。
在开发环境下(Windows)输出日志如下:

同样的程序部署到生产(linux),输出日志如下:

可以看到,在window下监听的是内网地址,但在linux下是本地127.0.0.1。

在linux下,所有的东西都是文件,127.0.0.1是一个网卡配置文件,所以猜想也被当成一个网卡。
解决办法:
修改 /etc/hosts,把当前主机名放到hosts映射中:
192.168.200.129 centos7-test
重新启动

发现监听地址已经是内网地址了。启动程序测试通过。
其实还有一些其他方法,因为要改代码或环境,就没用选用:
1.在java Main中增加参数,即改为,java -Djava.rmi.server.hostname=192.168.1.101 Main
2.在初始化时增加如下代码,System.setProperty(“java.rmi.server.hostname” , “192.168.1.101” );
3.使用tomcat时,需要在catalina.sh最前面加入如下脚本,JAVA_OPTS=”-Djava.rmi.server.hostname=ip”
参考:

Spring RMI 多网卡问题


http://blog.sina.com.cn/s/blog_67704adf01016fav.html


已发布

分类

,

来自

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注