2012-12-05 145 views
0

我有一臺Corba服務器在系統中運行,我想從同一局域網上的另一臺計算機訪問該系統。我試圖給服務器的服務器IP訪問(代碼附加);但是我得到的錯誤如下提到:Corba遠程訪問

orbd -ORBInitialPort 1050 -ORBInitialHost <serverip>& 

java HelloServer -ORBInitialPort 1050 -ORBInitialHost <serverip>& 

java HelloClient -ORBInitialPort 1050 -ORBInitialHost <serverip>& 

WARNING: "IOP00410201: (COMM_FAILURE) Connection failure: socketType: IIOP_CLEAR_TEXT; hostname: 127.0.1.1; port: 43944" 
org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 201 completed: No 
  • 它說主機名127.0.1.1,但是這不是我指定的服務器名稱。
  • 該端口號是不同的形式我指定的掃描笏
  • 服務器尚未收到任何連接,仍在等待。

有人可以幫我嗎?

+1

以上哪個應用程序引發異常?客戶端或服務器? – tuergeist

+0

你能告訴我們「HelloClient」和「HelloServer」的代碼嗎? –

回答

-2

Thanks ppl。我更改了/ etc/hosts conf文件。更改了localhost ip,以及我如何訪問遠程服務器。

1

CORBA程序不直接處理服務器的IP地址。當你想訪問某個對象時,你需要它的IOR - 或可互換的對象引用。 IOR包含需要與對象聯繫的機器的地址,一些對象ID以及一些更多的管理權限。

有兩種最常用的方法來獲取某些對象的IOR。低級方法是服務器轉換爲字符串,並將該字符串寫入某個文件。客戶端讀取該字符串並將其轉換爲對象引用。

其他方法是讓名稱服務運行,負責將名稱轉換爲IOR。像對象的DNS一樣。

典型的CORBA程序只會經歷一次或幾次「根」對象的跳舞,而其他對象的對象引用會作爲返回值從調用返回到根對象。

+2

這都是事實,但我不認爲它是相關的。地址和端口正在提供給程序,以便它們可以連接到ORB。這是必要的,所以程序可以連接到命名服務等等,然後他們可以從中檢索由IOR標識的對象,如您所描述的。所以,這些程序確實需要ORB服務器的地址和端口。 –

+0

除非它們沒有連接到命名服務,而是直接連接到嚴格的IOR,否則程序需要一個命名服務的IOR而不是IP。我會假設非常簡單的hello world命名服務並沒有涉及到,但是已經合併了IOR –

+0

上面的例子使用java的構建命名服務,由daemonized ordb進程提供 – tuergeist