【发布时间】:2012-04-18 00:32:25
【问题描述】:
我有一个客户端/服务器应用程序,它通过 JNDI/RMI/IIOP 在客户端使用一些 Glassfish 客户端代码(未打包为 Glassfish 客户端)和在服务器端使用 Glassfish 实例进行通信。
我有一些 Glassfish 多模式脚本,用于确保我在任何机器上创建的域完全相同且配置正确。
在本地网络上使用该脚本,我已经确保我可以从我机器上的客户端代码访问远程 Glassfish 服务器实例(这是一个相当合理的猜测,但是我倾向于测试所有我不完全确定的东西的)。
下一步是让客户端/服务器应用程序在(我应该说“通过”)互联网上运行:我的客户端代码在我的公司 LAN 中(换句话说,在我的机器上)和我的服务器代码在 Amazon VM 上运行我的 Glassfish 服务器。由于某些原因,远程 Glassfish 正在 Windows 虚拟机上运行。
显然(当我问这个问题时,你可以放心地猜测通过互联网测试不起作用。你是对的。
所以,为了进行更多猜测,我在我的机器和服务器上都启动了SmartSniffer。
在我的机器上,我只能看到一个 TCP 数据包发往该服务器实例(没有任何返回)。
在服务器实例上,我可以看到一个数据包进入(客户端查询)和一个数据包退出(服务器应答)。该服务器答案如下所示:
[2012 年 4 月 4 日上午 11:47:13:917] GIOP.......(......NameService......_is_a............ .NEO..............(IDL:omg.org/SendingContext/CodeBase:1.0............ n........172.27.63.145.Ô2....¯«Ë........e.................... ………… ..................... ... ......................(IDL:omg.org/CosNaming/NamingContext:1.0。
那个 172.27.63.145 地址是我在本地网络中的 IP。
[2012 年 4 月 4 日上午 11:47:13:917] GIOP.......2............NEO............0.......(IDL:omg .org/SendingContext/CodeBase:1.0............ô............46.137.114.###.'5....¯«Ë.... ....d.............. ..................... ... ................!......|......$...... ...f............10.241.42.###.'6.@............g...... .g........默认.........g.......+IDL:omg .org/CosNaming/NamingContextExt:1.0.............¢........10.241.42.208.'5...M¯«Ë.... ...d... S1AS-ORB............RootPOA...... TNameService.................................................. . …………&……
46.137.114.### 是我的 Amazon VM 的外部 IP,10.241.42.### 是它在亚马逊魔法虚拟服务器中的内部 IP。
看来服务器正在应答,不是吗?
但是这个答案永远不会在我的网络中找到我的机器。
那么...我如何检查它丢失的位置?似乎数据包嗅探器已经完成了它的工作,但我现在能做什么?
注意这个问题是对"How to Connect a glassfish client to glassfish server over NATs?"的澄清
【问题讨论】:
标签: java networking rmi iiop