現在很多人在對CORBA進行學習,大家都已經了解到CORBA是一個完全中間性的語言,可以使用接口定義語言(IDL)定義開發時使用接口的 Client 和實現接口的 Server 所需要的信息。
為了保證在不同的 CORBA 產品基礎之上構建的分布式對象可以相互通信,Client和Server通過ORB(對象請求代理)進行通信。一般的運行流程是Client把請求發送給ORB,ORB再把請求發送給Server,Server把返回結果發送ORB,ORB再把返回結果發送給Client。ORB可以說Client和Server之間的翻譯者。即使Client和Server使用不同的編程語言編寫,只要是符合相同的IDL定義,ORB也可以完成相互的通信。
所有的文檔在強調服務器及客戶機可以是java也可以是C++或其他語言(如:Delphi)進行編寫,但在網站或書本是沒有具體說如何應對多語言客戶機的例子。《JAVA2核心技術》上面有些說明,但也只是介紹性的文章,故自己下載了omniORB304,進行了一次使用SUN的 tnameserv命名服務程序,服務器用JAVA編寫,客戶機分別用JAVA和C++(VC6+omniORB)編寫的試驗,希望通過一次編程的具體操作實例來體驗或明了CORBA思想。
總體的編寫過程如下:
用IDL定義一個接口文件,描繪要實現的功能,也可以說是定義一個要實現功能的一個模版(SysPRop.idl)
使用"IDL to Java"編譯器(這里是IDLJ)將IDL文件轉化為Java編程語言中編寫的接口定義,生成所需的代碼存根及helper類
使用Java語言編寫客戶機和服務器的實現程序。
使用"IDL to C++"編譯器(這里是omniidl)將IDL文件轉化為C++編程語言中編寫的接口定義,生成所需的代碼存根及helper類
使用C++語言編寫客戶機實現程序(當然也可編寫服務器程序,但本次試驗沒有進行)
起動命名服務tnameserv
起動Java編寫的服務程序
用Java和C++編寫的客戶機分別調用相應的服務
2. 運行環境的設定:
總體環境由jdk1.3+omniORB3.0(www.uk.research.att.com/omniORB/doc/3.0) +vc6 組成,下面說明具體的安裝。
2.1. 安裝JDK1.3
從SUN公司DOWN JDK1.3或者通過其他方式得到jdk1.3進行安裝,再設定相應的環境變量,在本文測試用的電腦上是如下所示:
CLASSPATH=.;
JAVA_HOME=D:/jdk130
修改原來的PATH變量,添加"%JAVA_HOME%/bin;",如下
PTAH=%JAVA_HOME%/bin;原變量
注重:我在第一次使用jbuilder的jdk1.3時,服務器不能正常工作,我只是發覺這么一回事,具體原因與本文無關而沒有進行了解,請諒。
2.2. 安裝VC6
VC6按常規方式安裝,注重的是:在本文測試用的電腦上安裝在如下位置
C:/Program Files/Microsoft Visual Studio
2.3.安裝omniORB
從 www.uk.research.att.com/omniORB/doc/3.0 下載omniORB3.0 ( 本文測試所下載的文件是omniORB_304_x86_win32.zip )。
用WinZip進行解壓omniORB_304_x86_win32.zip到omniORB_304_x86_win32目錄,目錄內存在omni目錄,復制omni目錄內的文件到你把想存放的位置。
測試電腦安裝在C:/omni
根據C:/omni/README.win32 文檔進行設定,由于運行程序及命令行在控制臺進行,所以本次測試并不根據文檔要求去設定環境變量,而是編寫了一個omni.bat,在使用控制臺時,首先運行。
新聞熱點
疑難解答
圖片精選