2012-02-15 127 views
3

我剛開始使用CORBA。基本上,我不得不實現一個充當CORBA客戶端的Java應用程序。在這一點上,我主要使用Sun JDK(JDK6)工具,包括idlj.exe(編譯我給出的IDL)和orbd.exe(用於測試我的代碼),到目前爲止,我已經能夠使用idlj和IDL來創建Java類,並且我還編寫了一個測試服務器應用程序和測試客戶端應用程序,它們都在工作(我必須編寫小型服務器應用程序,以便測試我的客戶端應用)。CORBA(orbd)網絡配置?

正如我上面所說,我使用orbd.exe作爲測試的ORB。

起初,我有orbd.exe,我的Java服務器應用程序,和我的Java客戶端應用程序,在同一臺機器上所有正在運行,而工作。

我也更分散配置,其中我跑orbd.exe和另一臺機器上(testxp)我的Java服務器應用程序,和我的Java客戶端應用程序在不同的機器上測試,和工程。

我的問題是:有很多的文件,網頁等,我已經看到了重新的。 CORBA的圖表顯示了兩個ORB,例如一臺機器上的服務器應用程序和ORB,以及另一臺/第二臺機器上運行的客戶端應用程序和另一個/第二個ORB,兩個ORB彼此通信:

客戶端應用程序==> ORB1 ----> ORB2 ==>服務器應用

,而在我的測試,到目前爲止,使用orbd.exe作爲ORB,我只是一直在使用一個ORB。

所以,我想知道我怎麼可以配置測試配置,其中有上文描述的兩個ORB的?

我能做到這一點使用orbd.exe,還是orbd.exe不在該類型的配置工作?

此外,如果可以使用orbd.exe來完成,我該怎麼做?

感謝, 吉姆

回答

1

CORBA是一種架構和基礎設施的網絡中進行通信的應用程序。 ORB是對IIOP調用序列化(封送)和反序列化(解組)的組件。使用CORBA,您可以使用C#編寫代碼(使用IIOP.NET)並使用Java與服務器通信。

所以,你是對的,溝通是在ORB之間進行的。

| client app | < ==> ORB1 < - (IIOP) - > ORB2 < ==> | server app |

ORBD是一個帶有命名服務器的ORB。這是理想的,你只有一個名稱服務,你可以閱讀關於名稱服務here

最後,您有很多方法可以開始ORB之間的通信。 (a)激活POA中的servant並調用方法* poa.object_to_string(servant)*,將該字符串寫入文件,然後使用* poa.string_to_object(fileAsString)*在客戶端中讀取它。 (b)定義服務器主機和端口並使用corbaloc。 (c)在名稱服務器(最佳選項)中訂閱。

嘗試在您的測試中使用三個過程。名稱服務器,客戶端,服務器。

PS:我喜歡JacORB然後JDK球

編輯: 添加一些代碼,以幫助:

orb = org.omg.CORBA.ORB.init(args, props); 
org.omg.CORBA.Object obj = this.orb.resolve_initial_references("RootPOA"); 
this.rootPOA = POAHelper.narrow(obj); 
POAManager manager = this.rootPOA.the_POAManager(); 
manager.activate();