连接到远程Glassfish托管的EJB

时间:2012-03-27 08:44:38

标签: networking glassfish ejb rmi jndi

我正在努力的应用程序开始进入预发布阶段。

在此阶段,服务器端应用程序组件将部署在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
.'6.@........g..............g........default...................g....
...........+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)是我公司LAN中的IP。根据我对itnernet通信的理解,它应该是我的公司局域网公共IP,不是吗?如何使Glassfish客户端使用该IP?

1 个答案:

答案 0 :(得分:0)

已明确获得诊断:从LAN连接到服务器的客户端将自己的内部网络专用地址发送到服务器,该服务器无法转发任何应答。结果,服务器没有回答,因此挂起。