- 论坛徽章:
- 0
|
自己搞定!
问题原来出在这里:在服务端的 Naming.rebind("rmi://localhost:1099/CalculatorService", c);这个语句在Windows下没问题,但在其它系统,包括Linux(Unix)等下面是不行的,因为系统把localhost解析为127.0.0.1,当客户端向服务器Lookup时,服务端就会把解析出来的地址发给客户端,让客户端再根据这个地址去连接,客户端收到127.0.0.1这个地址去连接,实际连接的是自己本身,当然也就不行了。
更正办法:
把Naming.rebind("rmi://localhost:1099/CalculatorService", c);改成Naming.rebind("rmi://192.168.1.10:1099/CalculatorService", c);,直接用IP地址(192.168.1.10为服务器本身IP),这样就没问题了;或者是用机器名,该服务器的名字为RHELTEST,把它加到服务器的hosts文件中,并放在127.0.0.1之前,以让该服务能正确解析出来机器名所对应的IP;要么用域名解析也行,这种方法比较适合大规模场合。
疑问Naming.rebind("rmi://localhost:1099/CalculatorService", c);,在Windows下能正常工作,真的是想不通,看样子Windows下和Linux下的JAVA的工作方式也是有所区别的!
[ 本帖最后由 jxh_ty 于 2005-12-11 15:30 编辑 ] |
|