2012-03-27 100 views
1

我目前正在开发的应用程序开始进入预发布阶段。连接到远程Glassfish托管的EJB

在此阶段中,服务器端应用程序组件将在Amazon VM上部署,而客户端应用程序保留在用户计算机上。

此应用程序使用JNDI和RMI连接到服务器以调用远程EJB方法。这适用于localhost和本地网络。

但是,当试图连接到Amazon主机时,应用程序在context.lookup方法上挂起。也就是说可以从这个远程服务器获得JNDI上下文,但是不能在该上下文中执行查找。

如何才能获得良好的故障诊断?

是否有可以为RMI握手/任何生成的日志?

有没有什么办法可以在服务器端看到查询是否真的驱动通过互联网到服务器的方式?

另请注意,我已经在我的Glassfish服务器上启用了公共IP使用(using recommended Oracle procedure)。

编辑根据服务器上的快速TCP捕捉,似乎服务器在局域网客户端地址,它当然是不知道的接收客户端上下文查询:

查询

[3/27/2012 11:05:22 AM:169] 
GIOP.......(................NameService....._is_a................... 
NEO................ª.......(IDL:omg.org/SendingContext/CodeBase:1.0. 
...........n........172.27.63.145.ܺ....¯«Ë........e................ 
........... ................... ... ...........&...............(IDL: 
omg.org/CosNaming/NamingContext:1.0. 

答复是

[3/27/2012 11:05:22 AM:171] 
GIOP.......2............NEO................0.......(IDL:omg.org/Send 
ingContext/CodeBase:1.0............ô........46.137.114.67.'5....¯ 
«Ë........d........................... ................... ......... 
.....&...........!...|...............$....f............10.241.42.208 
.'[email protected].. 
...........+IDL:omg.org/CosNaming/NamingContextExt:1.0.............. 
.......10.241.42.208.'5...M¯«Ë.... ...d... S1AS-ORB............Root 
POA....TNameService............................... ................. 
.. ... ...........&...... 

(如使用SmartSniff ASCII输出读取)。

查询IP(172.27.63.145)是我公司局域网中的IP。根据我对itnernet的沟通了解,应该是我公司的局域网公共IP,不是吗?我如何让Glassfish客户端使用该IP?

回答

0

已经清楚地获得了诊断:从LAN连接到服务器的客户端将自己的内部网络专用地址发送到服务器,该服务器无法转发任何答案。结果,服务器不应答,因此挂断。