免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2550 | 回复: 11
打印 上一主题 下一主题

JAVA调试通不过之新问题----难道真的一次编程,到处调试??? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-09 21:36 |只看该作者 |倒序浏览
程序的客户端在:
JAVA调试通不过
这个程序服务器在Windows下,客户端在其它系统下没有问题,运行正常。
但如果服务端放在Linux(RHAS4)下,各种环境均没问题,客户端为Windows,总是会出现以下这个问题,不能正常运行:

[ 本帖最后由 jxh_ty 于 2005-12-9 21:52 编辑 ]

1.JPG (14.21 KB, 下载次数: 33)

问题:

问题:

论坛徽章:
0
2 [报告]
发表于 2005-12-09 22:21 |只看该作者
你的Linux的防护墙允许你的通信么?

论坛徽章:
0
3 [报告]
发表于 2005-12-10 05:10 |只看该作者
你启动服务了么.

论坛徽章:
0
4 [报告]
发表于 2005-12-10 12:32 |只看该作者
在linux(没有防火墙)的class文件目录下运行了rmiregistry &然后运行了java CalculatorServer,会出现上面的错误提示,如果在Linux下,没有运行上面的两个或是一个就是出现下面的错误:

1.JPG (14.12 KB, 下载次数: 34)

问题:

问题:

论坛徽章:
0
5 [报告]
发表于 2005-12-11 15:23 |只看该作者
自己搞定!
问题原来出在这里:在服务端的  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 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2005-12-11 22:15 |只看该作者
确实很奇怪。window也是把localhost解析成127.0.0.1的啊。为甚么就能工作呢。按理说不能工作是比较正常的。

论坛徽章:
0
7 [报告]
发表于 2005-12-11 23:07 |只看该作者
啊,怎么是这样解释的?

bind时,填写127.0.0.1或localhost都可以

客户端lookup时,直接就解析了,所以那个地址要填写服务器的域名/IP等,不是跟bind时一样的localhost或127.0.0.1

论坛徽章:
0
8 [报告]
发表于 2005-12-12 18:57 |只看该作者
你老兄可能都在Windows下用JAVA,没遇到过这个问题,但在Linux下就是不行,你必须是Naming.rebind("rmi://192.168.1.10:1099/CalculatorService", c);才行,如果在Windows下,服务端则用Naming.rebind("rmi://localhost:1099/CalculatorService", c);和Naming.rebind("rmi://192.168.1.10:1099/CalculatorService", c);两者都可以的,我已经试过很多次了。而且这个问题在网有很多人提出了,但都没有人回答,所以我在这时也算是给大家一个答复。
   至于在Windows对localhost,它的解析也是127.0.0.1这个IP,只是可以JAVA在Windows下工作可能多把它转化了一下,转化成真的IP了,所以Windows下的工作就没问题。在这里也给各位朋友说上一句:一定要在软件将要运行的环境中开发,否则后果自负!!!!!

[ 本帖最后由 jxh_ty 于 2005-12-12 18:58 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2005-12-12 19:09 |只看该作者
linux 对 localhost 解析 不是 127.0.0.1 吗?

论坛徽章:
0
10 [报告]
发表于 2005-12-12 19:14 |只看该作者
现在假设两台机 A:192.168.0.1   B:192.168.0.2

将A做服务器,在 bind 时,localhost/domain name/ip都行,前提是localhost或domain name要能解析成

127.0.0.1 或 192.168.0.1



客户端的lookup时,填写的不能是localhost,要ip 192.168.0.1 或 domain name

LZ是不是按我上面说的做,但是失败了?

[ 本帖最后由 wobushiwo 于 2005-12-12 19:16 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP