2012-04-04 33 views
0

我有一个客户端/服务器应用程序,它通过JNDI/RMI/IIOP在客户端使用一些Glassfish客户端代码(不作为Glassfish客户端打包)和服务器端Glassfish实例进行通信。如何通过互联网调试RMI/IIOP?

我有一些Glassfish多模式脚本,用于确保我在任何机器上创建的域完全相同并正确配置。

在本地网络上使用该脚本,我已经确保我可以从我的机器上的客户端代码访问远程Glassfish服务器实例(这是一个相当合理的猜测,但是我倾向于测试所有事情,我并不完全肯定)。

下一步是让客户端/服务器应用程序工作(我应该说“通过”)互联网:与我的公司局域网中的客户端代码(换句话说,在我的机器上)和我的服务器代码在亚马逊VM运行我的Glassfish服务器。出于某些原因,远程Glassfish正在Windows VM上运行。

很明显(我问这个问题,你可以放心地猜测通过互联网测试是行不通的。你说的对。

因此,有更多的猜测,我在我的机器上启动SmartSniffer都和上服务器。

在我的机器,我只能看到一个TCP数据包会到该服务器实例(并没有什么回来)。

在服务器实例中,我可以看到一个数据包进入(客户端查询)和一个数据包退出(服务器答案)。服务器答案如下所示:

[4/4/2012 11:47:13 AM:917] GIOP .......(................ NameService ... .._ is_a ................... NEO ................ª.......(IDL: omg.org/SendingContext/CodeBase:1.0 ............ñ........172.27.63.145.Ô2....¯«Ë........ e ........................... ................... 。 .. ........... & ...............(IDL:omg.org/CosNaming/NamingContext:1.0。

那172.27.63.145地址就是我在本地网中的IP地址。

[4/4/2012 11:47:13 AM:917] GIOP ....... 2 ............ NEO ...... .......... 0 .......(IDL:omg.org/SendingContext/CodeBase:1.0 ............ô....... .46.137.114。###。'5 ....¯«Ë........ d ....................... ... ................... ... ........... & .......... 。... ... | ............... $ ... ... f ............ 10.241.42。###。 “6。@ ........克..............克........默认............. ......克............... + IDL:omg.org/CosNaming/NamingContextExt:1.0 .............¢.. ...... 10.241.42.208.'5 ...M¯«Ë.... ... d ... S1AS-ORB ............ RootPOA ... 。TNameService ............................... ................ ... ... ........... & ......

这46.137.114 ###,是我的亚马逊VM的外部之一,10.241.42。# ##是亚马逊神奇虚拟服务器中的内部IP。

所以看来服务器正在回答,不是吗?

但是这个答案从来没有找到我的网络中我的机器的方式。

那么......我该如何检查它丢失的位置?似乎像包嗅探器已经完成了它的工作,但我现在可以做什么?

注意这个问题是澄清的"How to Connect a glassfish client to glassfish server over NATs?"

回答

0

也许愚蠢的问题,但您的Amazon EC2实例配置了开放的通讯协议工作所需的所有端口?您可以在EC2->安全组下的AWS控制台中查看您的实例分配给的安全组中已配置的开放端口。