我正在努力的应用程序开始进入预发布阶段。
在此阶段,服务器端应用程序组件将部署在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?
答案 0 :(得分:0)
已明确获得诊断:从LAN连接到服务器的客户端将自己的内部网络专用地址发送到服务器,该服务器无法转发任何应答。结果,服务器没有回答,因此挂起。