2012-03-27 98 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連接到服務器的客戶端將自己的內部網絡專用地址發送到服務器,該服務器無法轉發任何答案。結果,服務器不應答,因此掛斷。