在尝试从Windows调用Unix机器上的方法时,为什么我会得到RemoteException?
我在网络内部并且不认为这是因为防火墙问题,因为我可以在unix框启动RMI服务器后从Windows"unnet"执行"telnet".我也无法理解为什么要使用本地环回IP?
堆栈跟踪:
RemoteException occured, details java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection refused: connect
java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection refused: connect
Run Code Online (Sandbox Code Playgroud)
提前谢谢了.
lee*_*777 12
您可能没有在Linux机器上正确配置主机名.我敢打赌,如果你ping $(hostname)
从你的Linux盒子里,它会ping 127.0.0.1
.通常这是因为您的/etc/hosts
文件中有条目.
有几种方法可以解决这个问题.困难的方法是让您的Linux机箱正确地将其自己的主机名解析为其IP地址.您可以编辑/etc/hosts
文件,设置DNS服务器,无论您需要做什么.挑战在于,虽然这可能会使技术更正确,但您可能会破坏依赖旧行为的事物.
最少改变的路径是将系统属性设置为java.rmi.server.hostname
Linux机器的主机名或IP地址.(即java -Djava.rmi.server.hostname=$(hostname) ...
).
为什么?
Java RMI注册服务器实际上是网络注册服务器.其他计算机上的对象可以将自己绑定到此注册表.
注册远程对象时,注册包括网络地址作为注册的一部分.默认情况下,它使用的地址是"本地主机的IP地址",采用"dotted-quad"格式.在您的设置中,此地址是127.0.0.1
.
当您的Windows框与注册服务联系以获取远程对象的地址时,它会返回127.0.0.1
.然后它尝试联系该地址的远程对象.这就是为什么它会进入环回地址.
归档时间: |
|
查看次数: |
11049 次 |
最近记录: |