我有一个客户机/服务器应用程序,它通过JNDI/RMI/IIOP在客户端使用一些Glassfish客户端代码(不是打包为Glassfish客户机)和服务器端使用Glassfish实例进行通信。
我有一些Glassfish多模脚本,我使用这些脚本来确保我在任何机器上创建的域是完全相同和正确配置的。
使用本地网络上的脚本,我已经确保可以从机器上的客户端代码访问远程Glassfish服务器实例(这是相当合理的猜测,但是我倾向于测试所有我不完全确定的内容)。
下一步是让客户机/服务器应用程序在internet上工作(我应该说“通过”):我的客户端代码在我的公司LAN中(换句话说,在我的机器上),我的服务器代码在运行我的Glassfish服务器的Amazon上。出于某些原因,远程玻璃鱼正在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........default...................g...............+IDL:omg.org/CosNaming/NamingContextExt:1.0.............¢........10.241.42.208.'5...M¯«Ë.......d...S1AS-ORB.RootPOA.TNameService..............&.
该46.137.114.###是我的Amazon中的外部IP,而10.241.42.###是它在亚马逊神奇虚拟服务器中的内部IP。
看来服务器在接电话,不是吗?
但在我的网络里,这个答案永远找不到我的机器。
所以..。我怎么才能查到它在哪里丢了?看上去类似的嗅探器已经完成了它的工作,但是我现在能做什么呢?
注意这个问题是对“如何通过NAT将玻璃鱼客户端连接到glassfish服务器?”的一个澄清
发布于 2012-04-04 12:14:07
也许这是个愚蠢的问题,但是您的Amazon实例是否配置了所有需要打开的端口才能使您的通信协议工作呢?您可以在EC2->Security下的AWS控制台中看到您的实例分配给的安全组中已配置的打开端口。
https://stackoverflow.com/questions/10008772
复制相似问题