Java 如何通过internet调试RMI/IIOP?

Java 如何通过internet调试RMI/IIOP?,java,networking,rmi,iiop,Java,Networking,Rmi,Iiop,我有一个客户端/服务器应用程序,它通过JNDI/RMI/IIOP进行通信,在客户端使用一些Glassfish客户端代码(不打包为Glassfish客户端),在服务器端使用Glassfish实例 我有一些Glassfish多模式脚本,用于确保我在任何机器上创建的域完全相同并且配置正确 在本地网络上使用该脚本,我已经确保可以从我机器上的客户端代码访问远程Glassfish服务器实例(这是一个相当合理的猜测,但是我倾向于测试所有我不完全确定的东西) 下一步是让客户机/服务器应用程序在互联网上工作(我应

我有一个客户端/服务器应用程序,它通过JNDI/RMI/IIOP进行通信,在客户端使用一些Glassfish客户端代码(不打包为Glassfish客户端),在服务器端使用Glassfish实例

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

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

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

很明显(当我问这个问题时,你可以放心地猜测直通互联网测试不起作用。你是对的

所以,为了进一步猜测,我在我的机器和服务器上都开始了

在我的机器上,我只能看到一个TCP数据包发送到该服务器实例(没有返回任何内容)

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

[4/4/2012 11:47:13 AM:917] GIOP………(名称服务………..U 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地址

[4/4/2012 11:47:13 AM:917] GIOP…………2…………NEO…………0……(IDL:omg.org/SendingContext/CodeBase:1.0………..46.137.114.。#。。。。。。。。。。。。。。。。。。。。。。。。。。。 ................... ... ...........&...........!...|...............$... …f………10.241.42.####6.@…….g………g…….默认………g………+IDL:omg.org/CosNaming/namingcontextextextext:1.0………..、10.241.42.208.'5…M«»。。。。 …d…S1AS-ORB……RootPOA。。。。 t名称服务。。。。。。。。。。。。。。。。。。。 ……和

46.137.114.#######是我的Amazon虚拟机的外部一个,10.241.42.#####是它在Amazon Magic虚拟服务器中的内部IP

看来服务器正在应答,不是吗

但在我的网络中,这个答案永远不会传到我的机器上

那么…我怎样才能检查它在哪里丢失了呢?好像背包嗅探器已经完成了它的工作,但我现在能做什么呢


注意这个问题是对

可能很愚蠢的问题的澄清,但是您的Amazon EC2实例是否配置了所有必需的开放端口以使您的通信协议正常工作?您可以在AWS控制台中的EC2->security Groups(安全组)下看到实例分配给的安全组中配置的开放端口